[230305 - TIL] Dart - data types / functions

Dongwoo Kim·2023년 3월 5일
0

TIL / WIL

목록 보기
91/113

1. Data Types

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};

2. function

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]

    }


참고

노마드코더 - Dart 시작하기 (무료강의)

profile
kimphysicsman

0개의 댓글