Dart의 대부분의 Data Type은 Object로 이루어져있다.
1. String
- interpolation : 변수를 string 안에 넣을 수 있다.
var name = 'dongwoo'; var foo = 'my name is $name'; print(foo); // my name is dongwoo var age = 20; var bar = 'my name is $name and ${age + 10}'; print(bar); // my name is dongwoo and 30
2. bool
3. int
4. double
5. List
- collection if : 조건에 따라 요소를 넣을 수 있다.
var giveMeFive = true; var foo = [ 1, 2, 3, 4, if(giveMeFive) 5, ]; print(foo); // [1, 2, 3, 4, 5]
- collection for
var old_list = [ "a", "b", "c"]; var new_list = [ "d", "e", "f", for (var elem in old_list) "(old) $elem", ]; print(new_list); // [d, e, f, (old) a, (old) b, (old) c]
6. Map<E, T>
var foo = { "name": "dongwoo", "age": 30, }; print(foo); // {name: dongwoo, age: 30} Map<int, bool> bar = { 1: true, 2: false, }; print(bar); // {1: true, 2: false}
7. Set
var numbers = {1, 2, 3, 4}; Set<int> foo = {1, 2, 3, 4};
1. fat arrow syntax
- 함수가 단순 코드 한줄을 반환하는 경우 사용 가능
num sum(num a, num b) { return a + b }; num sum(num a, num b) => a + b;
2. var, null은 함수 타입으로 불가능
var foo() { // some code... }; // Error null bar() { // some code... }; // Error
3. void
- 반환 값이 없을 경우
- 반환 값을 사용하려고하면 에러
- return 값을 넣으면 에러 (null은 넣어도 에러가 나진않음)
void foo() { print("this is foo"); }; print(foo()); // Error
void bar() { return 10; }; // Error void cel() { return null; }
4. named parameter
: 함수를 호출할 때 파라미터 명을 지정해서 호출
- default 값 또는 required 설정 가능
void foo(String name, int age) { print('my name is $name and $age'); } void bar({ String name = "none", int age = -1 }) { print('my name is $name and $age'); } void cel({ required String name, required int age }){ print('my name is $name and $age'); } foo("dongwoo", 30); // my name is dongwoo and 30 bar(); // my name is none and -1 cel( name: "dongwoo", age: 30 ); // my name is dongwoo and 30 cel(); // Error
5. positional optional parameters
void foo( String name, [int? age = -1] ) { print('my name is $name and $age'); } foo("dongwoo"); // my name is dongwoo and -1
6. ?
String foo(String? name) { if (name != null){ return name.toUpperCase(); } return 'none'; } String bar(String? name) => name != null ? name.toUpperCase() : 'none'; void main() { print(foo("dongwoo")); // DONGWOO print(foo(null)); // Error print(bar(null)); // none print(bar(10)); // Error print(bar()); // Error }
7. ??
String cel(String? name) => name?.toUpperCase() ?? 'none'; print(cel("dongwoo")); // DONGWOO print(cel(null)); // none print(cel(10)); // Error print(cel()); // Error
8. ??=
String? name; print(name); name ??= 'dongwoo'; print(name); name = null; name ??= 'another'; print(name);
9. typedef
typedef L_i = List<int>; L_i foo(L_i list){ var reversed = list.reversed; return reversed.toList(); } void main() { print(foo([1, 2, 3])); // [3, 2, 1] }