본문 바로가기
프로그래밍/Flutter-Dart

[Flutter] Dart 문법 (class, ?, !, ?.)

by 채연2 2021. 3. 15.

* 클래스

?, !, ?.등 각각이 의미하는 바를 파악하지 못해서 너무 헤맸지만 의미를 알고나니 코드가 이해가 갔다...

class Spacecraft {
  // ? : 개체가 null일 수 있음
  String? name;
  DateTime? launchDate;

  //Constructor, with syntactic sugar for assignment to members.
  Spacecraft(this.name, this.launchDate) {
    //Initialization code goes here.
  }

  Spacecraft.origin() {
    name = "무탈리스크";
    launchDate = DateTime.now();
  }

  //Named contructor that forwards to the default one.
  Spacecraft.unlaunched(String name) : this(name, null);

  // ?. : 개체가 null인지 확실하지 않은 경우 사용. null이면 null, 그렇지 않으면 year
  // Getter, Setter : get, set 키워드로 사용
  int? get launchYear => launchDate?.year; //read-only non-final property

  //Method
  void describe() {
    print('Spacecraft: $name');
    if (launchDate != null) {
      // ! : null 허용 여부 제거
      int years = DateTime.now().difference(launchDate!).inDays ~/ 365;
      print('Launched: $launchYear ($years years ago)');
    } else {
      print('Unlaunched');
    }
  }
}

void main() {
  Spacecraft sc = Spacecraft("스카우트", DateTime.now());
  print(sc.name);
  print(sc.launchDate);
  print("\n");

  Spacecraft sc2 = Spacecraft.origin();
  print(sc2.name);
  print(sc2.launchDate);
  print("\n");

  Spacecraft sc3 = Spacecraft.unlaunched("캐리어");
  print(sc3.name);
  print(sc3.launchDate);
  print("\n");

  Spacecraft sc4 = Spacecraft("배틀크루저", DateTime.now());
  sc4.describe(); // ~/ : 실수가 나올 때 정수 리턴
}
//결과
스카우트
2021-03-15 15:14:37.202094


무탈리스크
2021-03-15 15:14:37.205085


캐리어
null


Spacecraft: 배틀크루저
Launched: 2021 (0 years ago)

 

 

참고 : blog.naver.com/PostView.nhn?blogId=getinthere&logNo=221663493259&parentCategoryNo=34&categoryNo=&viewDate=&isShowPopularPosts=false&from=postList

320x100

댓글