int n1 = 1;
double d1 = 10.1;
bool b1 = true;
String s1 = "홍길동";
var n2 = 10.1; // 초기화되면서 type추론이 확정돼 int 메모리 사이즈로 확정
dynamic n3 = 20; // 모든 타입을 다 받을 수 있다. 중간매개자로써 후에 새로운 타입으로 초기화되면 새로운 메모리 공간으로 보내 타입변경을 가능하게 한다.
void main(){
print("n1 : ${n1.runtimeType}");
print("d1 : ${d1}");
print("b1 : ${b1}");
print("s1 : ${s1}");
}
var
var n1 = 10; // → 10이 들어가는 순간 타입추론 완료! 이제 int만 넣을 수 있어
// 하지만 double로 설정하고 함수 내에서 n2 = 10; int형으로 작성 시 오류 안 뜸
// → 경고 정도? 메모리가 더 커서 하지만 웬만하면 쓰지마라 노랗게 계속 나옴
var n2 = 10.5
//그러나!!!
var n3 = “홍길동” → var n3 = 10;
// 하면 오류 → 메모리 문제 + 숫자와 문자의 차이!
dynamic
: object type 으로 모든 타입을 다 받을 수 있다 → 타입변경도 가능
중간에서 매개해줘서 처음 선언한 타입과 다른 타입을 집어넣어주면 메모리 공간 새로 만들어서 넣어줌

null 대체 연산자 ??
:==null? (null이냐?)를 줄여서 ??로 쓸 수 있다!!
void main(){
String? username = null; //null을 가질 수 있으려면 ?붙여야한다. String을 쓰면 String만 써야한다
print(username);
print(username == null? "홍길동":username);
print(username ?? "홍길동"); // null대체 연산자 = ??
}
String 이라고 적으면 null도 못 받아
→ 받으려면 String? 붙여야한다.
함수
Function a = int add(){
//이렇게 하면 오류
};
Function b = (){
return 1;
};
// 람다식으로도 작성해보기 -> 람다식에는 return이 필수이다(공급자)
// 람다식은 한 줄로 표현 가능한 함수만 쓸 수 있다. 여러줄이면 (){} 사용해라
Function b = () => 1;
// Function을 Function이 아닌 var로도 표현이 가능하다
var c = () => 1;
var c = (){
return 1;
}
// main 함수는 기본적으로 인자를 받지 않거나, List<String> args를 받는 식으로 사용해야 한다.
void main(){
int result = c(); // 앞에 int로 명시했기 때문에 c();의 결과값이 int여야한다
print(result);
}
${} 구문을 사용하여 변수를 문자열에 삽입
Share article