[Dart] Dart에서 중요한 컨셉

ryan·2021년 6월 6일
0

Dart/Flutter

목록 보기
6/21
post-thumbnail

참고

링크

1. 모든 게 다 Object(Object Oriented Language)이다

  • Variable에 넣을 수 있는 것은 다 object이다. function, number, null 모두 object.
// print가 되는 것을 보면, number, null, String 등 모든 게 object라는 것을 알 수 있다.
main() {
  List<dynamic> list = [1, null, '3', 4, 5];
  print(list.toString()); // [1, null, 3, 4, true]
}

2. List<int>, List<dynamic> 등을 지원한다

  • int, double, float, dynamic etc.
main() {
  List<int> list = [1, 2, 3, 4, 5]; // int를 object로 가지는 List
  print(list.toString()); // [1, 2, 3, 4, 5]
}

main() {
  List<int> list = [1, 2, '3', 4, 5]; // value를 String으로 바꾸면
  print(list.toString()); // Error: A value of type 'String' can't be assigned to a variable of type 'int'.
// dynamic: type이 없다
main() {
  List<dynamic> list = [1, null, '3', 4, 5];
  print(list.toString()); // [1, null, 3, 4, true]
}

3. Typed 언어(C, C++, JAVA...)지만, 자유를 준다

  • Type을 추측

  • var: var를 사용하면 dart에서 type을 추측할 수 있다

main() {
  var list = [1, null, '3', 4, true]; // 모든 게 object라서 실행이 잘된다
  print(list.toString()); // [1, null, 3, 4, true]
} 
  • dynamic: dynamic이니까 type을 추측하지 말고, dynamic이라고 알고 있어~
main() {
  dynamic list = [1, null, '3', 4, true];
  print(list.toString());
}

4. no more 'public', 'private', 'protected'

  • function() = public
  • _function() - private
main() {
  var car = Car();
  print(car.model); // hyundai // public
  print(car._enginNo); // 309724024 // private 같은 페이지에서는 접근할 수 있지만, 다른 페이지에서 접근할 수 없다
}

class Car {
  String model = 'hyundai';
  String _enginNo = '309724024';
}

5. identifier(식별자)는 _ 아니면 letter로 시작한다

  • _variable123 (o)
  • function() (o)
  • 123variable (x)
main() {
  var car = Car();
  print(car.5model);
  print(car._enginNo);
}

class Car {
  String 5model = 'hyundai'; // Error: Compilation failed.
  String _enginNo = '309724024';
}

Dart 해보기

// Basic Dart
class Person {
  String name = 'Ryan';
  int age = 33;
}

double addNumbers(double num1, double num2) {
//   print(num1 + num2);
  return num1 + num2;
}
  
void main() {
  var p1 = Person();
  var p2 = Person();
  p2.name = "Kim";
  print(p1.name);
  print(p2.name);
  double firstResult;
  firstResult = addNumbers(1, 1);
  print(firstResult + 1);
  print('Hello!');
}

명명된 매개변수(optional)

class Person {
  String name;
  int age;
  
  // 중괄호를 사용한다
  Person({String inputName, int age}) {
    name = inputName;
    this.age = age;
  }
}

double addNumbers(double num1, double num2) {
  return num1 + num2;
}

void main() {
  // 많은 매개변수들이 있으면, 알아보기 싶지 않아서 명명된 매개변수를 사용하고,
  var p1 = Person(inputName: 'Ryan', age: 50);
  // 명명된 매개변수를 사용하면 전달 인자의 순서는 중요하지않다
  var p2 = Person(age: 18, inputName: 'Kim');
  print(p1.name);
  print(p2.name);
  double firstResult;
  firstResult = addNumbers(1, 1);
  // ...
  print(firstResult + 1);
  print('Hello');
}

default parameter value

class Person {
  String name;
  int age;
  
  // 기본 매개 변수 값 지정
  Person({String inputName, int age = 50}) {
    name = inputName;
    this.age = age;
  }
}

void main() {
  // 기본 매개 변수 값을 지정해주면, 인자를 전달할 때,
  // 변수만 넣으면 기본값을 전달한다
  var p1 = Person(inputName: 'Ryan', age);
  var p2 = Person(age, inputName: 'Kim');
  print(p1.name);
  print(p2.name);
}

short cut

class Person {
  String name;
  int age;
  
  // short cut
  Person({this.name, this.age = 50})
}

void main() {
  var p1 = Person(name: 'Ryan', age);
  var p2 = Person(age, name: 'Kim');
  print(p1.name);
  print(p2.name);
}
profile
👨🏻‍💻☕️ 🎹🎵 🐰🎶 🛫📷

0개의 댓글