Dart (1)

소밍·2023년 6월 28일
0
post-thumbnail

variable type

void main() {
// 정수
  int number1 = 10;
  int number2 = 15;

  print(number1 + number2);
  print(number1 - number2);
  print(number1 / number2);
  print(number1 * number2);

// 실수
  double number3 = 2.5;
  double number4 = 0.5;

  print(number3 + number4);
  print(number3 - number4);
  print(number3 / number4);
  print(number3 * number4);

// boolean
  bool isTrue = true;
  bool isFalse = false;
  print(isTrue);
  print(isFalse);

// string
  String name = '데식';
  String name2 = '도운';
  print(name +' '+ name2); //데식 도운
  print('${name} ${name2}'); //데식 도운
  print('$name $name2'); //데식 도운

// dynamic ; 어떤 타입이든 넣을 수 있음
  dynamic name3 = '솜';
  dynamic number = 1;
  var name4 = '민';
  // var과 차이점 ?
  print(name3.runtimeType); // String
  print(name4.runtimeType); // String

  name3 = 2; // 타입 변경 가능
  name4 = 5; // error
  // name2를 처음에 String 타입으로 선언했기 때문에 다른 타입으로 변경 불가
}

null

void main(){
// nullable - null이 될 수 있다. ?
// non-nullable - null이 될 수 없다. !
// null - 아무런 값도 있지 않다.

  String name = '솜';
  print(name); // 솜
  name = null; // error 발생
  // A value of type 'Null' can't be assigned to a variable of type 'String'.
  // null이 들어갈 수 없는 string 타입인데 null을 넣으려고 했다는 의미

  String? name2 = '민'; //타입 옆에 ? 넣을 경우 null까지 들어갈 수 있는 타입
  name2 = null;
  print(name2!); name은 절대 null이 아니다!
}

final, const

  • final 혹은 const를 이용하여 변수를 선언한 경우 변수 값을 변경할 수 없다.
  • 타입을 생략할 수 있다.
void main(){
  final name = '솜';
  print(name); // 솜

  name = '민'; //error

  const name2 = '민';
  print(name2); // 민

  name2 = '솜'; //error
}

DateTime

  • 현재 시간을 변수에 저장할 수 있음

  • 코드가 실행되는 순간의 시간을 가져옴

  • final은 빌드 타임의 값을 알고 있지 않아도 됨.

  • const는 빌드 타임의 값을 알고 있어야 함 -> 지금 당장, 지금 코드를 작성했을 때 작성하는 순간의 코드의 값을 알고 있어야함.// 언제 실행될지 모르기 때문에 에러 발생

void main(){
  DateTime now = DateTime.now();
  print(now); // 2023-06-27 17:13:39.647

  final DateTime now2 = DateTime.now();
  const DateTime now3 = DateTime.now();
}

operator

void main(){
  double number = 4.0;
  print(number); // 4

  number+=1;
  print(number); // 5

  number-=1;
  print(number); // 4

  number*=2;
  print(number); // 8

  number/=2;
  print(number); // 4
}

null operator

void main(){
  double? number = 4;
  print(number); //4

  number = 2.0;
  print(number); //2

  number = null;
  print(number); //null

  number ??= 3.0; // number가 만약 null이면 3.0으로 값을 바꾸라는 뜻
  print(number); //3
}

값을 비교하는 operator

void main(){
  int number1 = 1;
  int number2 = 2;

  print(number1 > number2); // false
  print(number1 < number2); // true
  print(number1 >= number2); // false
  print(number1 <= number2); // true
  print(number1 == number2); // false
  print(number1 != number2); // true
}

type을 비교하는 operator

void main(){
  int number1 = 1;
  print(number1 is int); //true
  print(number1 is String); //false

  print(number1 is! int); //false
  print(number1 is! String); //true
}

논리 operator

void main(){
  bool result = 12 > 10 && 1 > 0;
  print(result); //true

  bool result2 = 12 > 10 && 0 > 1;
  print(result2); //false

  bool result3 = 12 > 10 || 1 > 0;
  print(result3); //true

  bool result4 = 12 > 10 || 0 > 1;
  print(result4); //true

  bool result5 = 12 < 10 || 0 > 1;
  print(result5); //false
}

list

void main(){
// 타입을 지켜야함
  List<String> blackPink = ['제니','지수','로제','리사'];

  print(blackPink[0]); //제니
  print(blackPink.length); //4
  blackPink.add('솜');
  print(blackPink); //['제니','지수','로제','리사','솜']
  blackPink.remove('솜');
  print(blackPink); //['제니','지수','로제','리사']
  print(blackPink.indexOf('로제'); //2
}

map

key/value

void main(){
  Map<String, String> dictionary = {
  	'Harry' : '해리',
    'Ron' : '론',
    'Hermione' : '헤르미온느',
  };

  print(dictionary);
  // {Harry: 해리, Ron: 론, Hermione: 헤르미온느}

  Map<String, bool> isHarryPotter = {
  	'Harry' : true,
    'Ron' : true,
    'Ironman' : false,
  };

  isHarryPotter.addAll({
    'Spiderman': false,
  }); // 한번에 여러 키-밸류 추가 가능

  print(isHarryPotter);
  // {Harry: true, Ron: true, Ironman: false, Spiderman: false}

// 값 확인하기
  print(isHarryPotter['Ironman']); // false

// 값 변경하기
  isHarryPotter['Spiderman'] = true;
  print(isHarryPotter);
  // {Harry: true, Ron: true, Ironman: false, Spiderman: true}

// 값 삭제하기
  isHarryPotter.remove('Harry');
  print(isHarryPotter);
  // {Ron: true, Ironman: false, Spiderman: true}

// 키, 값 가져오기
  print(isHarryPotter.keys); // (Ron, Ironman, Spiderman)
  print(isHarryPotter.values); // (true, false, true)
}

set

list와 유사하지만 list와 달리 중복값이 들어갈 수 없음

void main(){
  final Set<String> names = {
  	'som',
    'min',
    'dart',
    'som',
  };

  print(names); // {som, min, dart}

  names.add('something');
  print(names); // {som, min, dart, something}

  names.remove('something');
  print(names); // {som, min, dart}

  // 값이 있는지 확인
  print(names.contains('dart')); // true
}
profile
생각이 길면 용기는 사라진다.

0개의 댓글

관련 채용 정보