Dart - 배워보자 다트

정훈·2023년 6월 9일
1

처음에 시작은 Hello world

본 내용은 https://dart.dev/language 를 통해서 Dart 언어를 배우면서 기록하는 글입니다.

Hello World 하나 쳤다고 ,, 벌써 다배운느낌 ㅋㅋㅋ 재밌다 벌써부터 ..

Dart 중요포인트

변수로 할당할 수 있는 모든 건 객체이다. 모든 객체는 클래스의 인스턴스이며, 숫자, 함수모두 객체이다. 이들은 모두 Object클래스를 상속받고,

Dart 2.12 부터 Nullsafety가 적용되며 nullable한 변수를 만들수있다.

변수 or nullable


var name = "정훈";   // 타입 추론 
Object hobby="개구리";
String name = "bob";
dynamic name =4;

위 예시처럼 표현을 할수있다. type var, Object 등 변수의 참조를 저장할수있다.

var 를 붙이게되면 타입추론이 가능해지며 , var로 명시되어있는 변수 타입이 String일경우, 이 변수 값을 3으로 변경될때 타입이 int형이므로 컴파일에러가 발생하게된다.

하지만 dynamic 키워드는 var키워드 와 같이 타입추론도 가능해지면서 타입이 변경되어도 Compile Error가 발생하지않는다

String? name = "김정훈";
String name= null; 

null허용 여부를 활성화할려면 type앞에 ?를 붙이면된다.

Nullable하게 안하게될경우

Info: Compiling with sound null safety.
lib/main.dart:2:16:
Error: The value 'null' can't be assigned to a variable of type 'String' because 'String' is not nullable.
 String name = null;
               ^
Error: Compilation failed.

compile error가 발생하는반면 nullable하게 하게될경우 NULL이 찍히는걸 알수가있다.

nullable한 유형이 있을경우엔 초기값은 null인것을 명심하자

late type

late name; 

late을 붙이게되면 non-nullable한 타입들은 맨처음에 기본값을 지정해주지않으면 Null로 받아들여 Compile error가 발생하게된다 이를 위해 변수앞에 late 을 붙이게되면 어떠한 조건을 통해 name에 대한 참조값이 변경이되어야한다면 late을 쓰면될것같다.

또한 사용할때는 null확인 검사를 하지않음.

상수

const name = "";
final name = "";

const, final 키워드가 붙여지면 상수라 인식하여, name은 상수이기에 name을 수정할려고하면 Compile Erorr!

연산자

산술 연산자

+,-,*,/,~/,

assert(2 + 3 == 5);
assert(2 - 3 == -1);
assert(2 * 3 == 6);
assert(5 / 2 == 2.5); // double 리턴 
assert(5 ~/ 2 == 2); // int형 리턴 
assert(5 % 2 == 1); 

var a, b;

a= 0; 
b = ++a; b값을 참조해주기전 a값을 증가
assert(a==b) 1==1  true 

a= 0;
b= ++a;
assert(a==b) 1 !=0 ; 이므로 false 

타입 검사 연산자

dart type 검사는 is, as등등 이있다.

is 를 사용하면 변수의 타입이 맞는지 여부를 결정해주는 키워드이고 타입이 맞다면 true를 반환하며, 그게아니면 false를 반환함

type을 초기화시켜서 is키워드를 통한 검사도 가능함.

var name = "김정훈";
if(name is String) {
  print("문장려이에요");
}else{
print("문자열이 아니에요");
}

as를 사용하게되면 데이터 타입을 다른 타입으로 변환하는것을말하고,바꿀려는 타입에 관계나,상위타입으로 변경이가능함

int a= 3;
double b = a;  // error; 

int a =3; 
double b = a as double; // ok 

0개의 댓글