dart-04 Classes

Your First Dart Class class Player { String name = 'nico'; final int xp = 1500; void sayHello() { // print("Hi my name is $this.name"); this는 안써도 됨 print("Hi my name is $name"); } } void main() { // var player = new Player(); new 생략 가능 var player = Player(); print(player.name); player.name = 'lala'; print(player.name); player.sayHello(); } Constructors class Player { late final String name; late int xp; // 생성자 Player(String name, int xp) { this....

July 23, 2023

dart-03 Function

Defining a Function void sayHello(String name) { print("Hello $name, nice to meet you!"); } String sayHello2(String name) { return "Hello $name, nice to meet you!"; } String sayHello3(String name) => "Hello $name, nice to meet you!"; void main() { sayHello('nico'); print(sayHello2('nico')); print(sayHello3('nico')); } Named Parametes // positional parameter String sayHello(String name, int age, String country) { return "Hello $name, you are $age, and you come from $country"; } // 파라미터에 중괄호를 추가하면 named parameter로 사용이 가능 // default value가 없으면 파라미터 값이 null이 될 수 있기 때문에 실행이 안됨 String sayHello2({String name = '', int age = 0, String country = ''}) { return "Hello $name, you are $age, and you come from $country"; } // default value를 지정하지 않고 데이터를 받아야만 한다면 required 를 추가하면 됨 String sayHello3({required name, required int age, required String country}) { return "Hello $name, you are $age, and you come from $country"; } void main() { print(sayHello('nico', 12, 'cuba')); print(sayHello2( age: 12, country: 'cuba', name: 'nico', )); print(sayHello2()); print(sayHello3( age: 12, country: 'cuba', name: 'nico', )); } Recap // positional parameter String sayHello(String name, int age, String country) { return "Hello $name, you are $age, and you come from $country"; } // 파라미터에 중괄호를 추가하면 named parameter로 사용이 가능 // default value가 없으면 파라미터 값이 null이 될 수 있기 때문에 실행이 안됨 String sayHello2({String name = '', int age = 0, String country = ''}) { return "Hello $name, you are $age, and you come from $country"; } // default value를 지정하지 않고 데이터를 받아야만 한다면 required 를 추가하면 됨 String sayHello3({required name, required int age, required String country}) { return "Hello $name, you are $age, and you come from $country"; } void main() { print(sayHello('nico', 12, 'cuba')); // positional parameter라서 순서가 다르면 실행이 안됨 // print(sayHello(12, 'nico', 'cuba')); X print(sayHello2( age: 12, country: 'cuba', name: 'nico', )); print(sayHello2()); print(sayHello3( age: 12, country: 'cuba', name: 'nico', )); } Optional Positional Parameters // optional positional parameter // [] 대괄호로 감싸면 optional String sayHello(String name, int age, [String?...

July 23, 2023

dart-02 Data Types

Basic Data Types void main() { String name = 'nico'; bool alive = true; int age = 12; double money = 69.99; // 대부분의 데이터 타입들이 객체로 이뤄져 있다. // int 및 double의 경우 extends(상속) num // 그래서 아래와 같이 num으로 선언하면 정수와 실수를 모두 사용할 수 있다. num x = 12; x = 1.1; } Lists void main() { var numbers = [1, 2, 3, 4]; List<int> numbers2 = [1, 2, 3, 4]; numbers2....

July 23, 2023

dart-01 variable

with https://nomadcoders.co/dart-for-beginners Var Keyword void main() { var name = '니꼬'; // name이 문자열로 초기화 됐을 때 후에 다른 타입(정수형)을 넣을 수 없음 // name = 1; // 문자열은 가능 name = 'nico'; // 타입을 지정해서 사용할 수 도 있음 String name1 = '니꼬'; int i = 1; // 관습적으로? // 함수나 메소드 내부에서 지역변수를 선언할 때에는 var를 사용 // class 내 property 변수는 타입을 지정 } Dynamic Type void main() { // var로 선언하고 값을 넣지 않으면 dynamic type이 됨 var name; // type 상관 없이 사용 가능 name = 'nico'; name = 12; name = true; // dynamic 이라고 선언 가능 dynamic name1; } Nullable Variable // null safety가 없다면 아래 코드는 런타임(실행중)에 NoSuchMethodError가 발생 // bool isEmpty(String string) => string....

July 20, 2023

dart-00 dart 시작하기

with https://nomadcoders.co/dart-for-beginners dart란? 구글에서 만들었으며 모든 플랫폼에서 빠른 앱을 위한 클라이언트 최적화 언어입니다. Optimized for UI Productive development Fast on all platforms from https://dart.dev/ 컴파일러 Dart Native dart로 작성된 코드를 여러 CPU의 아키텍쳐에 맞게 변환해주는 컴파일러 ARM32 ARM54 x86_64 개발할 때 Dart VM을 통해 증분 재컴파일(핫 리로드 활성화), 라이브 메트릭 수집( DevTools 지원 ) 및 풍부한 디버깅 지원 기능이 있는 JIT(Just-In-Time 컴파일러)를 제공. 전체 컴파일이 되지 않기 때문에 변경된 작업들을 빠르게 확인 가능 배포할 때에는 Dart VM을 이용하지 않고 AOT(Ahead-Of-Time 컴파일러)를 통해서 각 아키텍쳐에 맞는 기계어로 변환돼서 빠르게 동작....

July 20, 2023