본문 바로가기
반응형

Dart/기초10

[Dart] Generator 제너레이터 Generator란? 연속적인 값들의 모음을 만들어주는 함수이다. sync한 데이터와 async한 데이터를 만들어줄때 방법이 다르다 Synchronous generator: Iterable 객체를 리턴해야 한다 Asynchronous generator: Stream 객체를 리턴해야 한다 아래는 sync한 버전의 예시이다. 0부터 n까지의 연속적인 숫자의 데이터들을 만들어 return해 준다 sync 제너레이터를 만드려면 function body 앞에 sync* 를 붙여주고 yield 키워드를 이용해 데이터를 생성해나간다 Iterable naturalsTo(int n) sync* { int k = 0; while (k < n) yield k++; } async 제너레이터는 async* 를 함수 구현체 앞에.. 2021. 10. 15.
[Dart] Future, Stream, Async function Async Function async function은 비동기 함수이다. 말 그대로 함수의 작업이 끝나지 않아도 다음코드를 진행해 버린다. async function은 함수 리턴값으로 Future 클래스를 리턴한다. 이 Future클래스로 함수가 끝난 결과값을 처리할 수 있다. 아래 일반적은 sync function이 있다고 하자 String lookUpVersion() => '1.0.0'; 이를 async로 바꾸면 아래처럼 함수에 async 키워드를 붙이고 Future클래스를 리턴해주면 된다 Future lookUpVersion() async => '1.0.0'; 위 함수는 String값을 리턴하기에 Future 이 되었다. 만약 값을 리턴하지 않으면 Future 라고 적어주면 된다. Future 클래.. 2021. 10. 15.
[Dart] 익명함수(Anonymous function), 람다함수(lamda) Anonymous function 다트에서 이름이 없는 함수를 익명함수, 람다, 또는 클로저(closure)라고 부른다. 형태는 다음과 같다 (파라미터) { //함수 구현부 } 아래는 for each문을 사용한 대표적인 예제이다. const list = ['apples', 'bananas', 'oranges']; list.forEach((item) { print('${list.indexOf(item)}: $item'); }); 만약 익명함수가 한줄이거나 return문 한줄일 경우 중괄호를 화살표로 바꿔줄 수 있다. (파라미터) => 한줄짜리 함수문장; list.forEach((item) => print('${list.indexOf(item)}: $item')); 2021. 10. 15.
[Dart] deferred as 로 라이브러리 나중에 로딩하기 Lazily loading a library Dart에서는 Deferred as로 라이브러리를 필요한 시점에서 로딩 할 수 있다. 자주 안쓰이는 라이브러리를 늦게 로딩하면 라이브러리를 안 쓸 때 퍼포먼스를 향상 시킬 수 있다는 장점이 있다! 사용법 먼저 라이브러리를 deferred as 키워드를 붙여 import 한다 import 'package:greetings/hello.dart' deferred as hello; 라이브러리를 사용하지 전에 loadLibrary() 메소드를 호출한다. Future greet() async { await hello.loadLibrary(); hello.printGreeting(); } loadLibrary() 메소드는 여러번 호출 가능하나 라이브러리 로드는 딱 한번만 .. 2021. 10. 15.
[Dart] var과 dynamic var 과 dynamic var은 타입추론이 가능합니다. 허나 한번 타입추론을 수행하면 이후 타입변경이 불가능 합니다. var a= 123; //a = "456"; // error! dynamic은 var과 같이 타입추론이 가능한 변수입니다. 타입이 정해져도 이후 타입변경이 가능합니다. dynamic a = 123 a = "456"; // OK 2021. 10. 15.
[Dart] mixin 클래스 Mixin 클래스란? 클래스코드를 다중상속을 통하여 재활용 할 수 있도록 만든 기능이다. Mixin 생성 및 사용법 재사용될 클래스 코드는 생성자를 정의하면 안된다 mixin으로 사용될 클래스의 생성을 원하지 않을경우 mixin 키워드를 사용한다 mixin 클래스는 with 키워드로 상속해준다. class Person{ int age; String name; Person(this.age, this.name); } class Singer{ String? song; } mixin Dancer{ String? dance; } class Idol extends Person with Singer, Dancer { Idol(int age,String name,[String? song, String? dance]):.. 2021. 10. 15.
[Dart] Dart 클래스 배우기 https://dart.dev/guides/language/language-tour A tour of the Dart language A tour of all the major Dart language features. dart.dev 해당페이지 내용을 기반으로 합니다. 다른언어와 겹치는 내용은 제외하였습니다. Dart의 클래스 Dart의 클래스는 최상위 클래스로 Object 클래스를 상속한다 Dart는 Mixin-based inheritance를 지원한다. mixin 이 뭔말인지 몰라서 찾아봤는데 아래와 같이 정의되어있다 Mixin-ased inheritance means that although every class (except for the top class, Object?) has exactly.. 2021. 10. 14.
[Dart] Dart 배우기 https://dart.dev/guides/language/language-tour A tour of the Dart language A tour of all the major Dart language features. dart.dev 해당문서는 위 공식페이지 내용을 번역하였습니다. Dart의 주요 컨셉 Dart의 모든 variable은 객체(Object) 입니다. 심지어 숫자, 함수 그리고 null까지 객체입니다. 모든 객체들은 자바와 같이 Object 클래스를 상속받습니다(null클래스 제외). Dart의 클래스들은 모드 인터페이스로 사용될 수 있습니다. Dart는 타입을 명시해주어야 하는 언어이지만 Dart는 타입 추론이 가능합니다. number라는 type은 대표적으로 숫자를 추론할 수 있는 자료.. 2021. 10. 13.
[Dart] 리스트이어 붙이기. spread operator ... 다트에는 spread operator(점점점, ...)라는 기능을 제공한다. 사용방법은 아래와 같다 var list = [...] void main() { var mylist = [1,2,3]; var mylist2 = [10, ...mylist]; var mylist3 = [10,mylist]; print(mylist); print(mylist2); print(mylist3); } 결과: [1, 2, 3] [10, 1, 2, 3] [10, [1, 2, 3]] 만약 이어붙이는 리스트가 널 가능성이 있으면 끝에다가 물음표를 붙여주면 된다. ...?list 이렇게 2021. 7. 26.
Dart의 선택적 매개변수 뭐하는거임? 자바에서 생성자를 만들때 여러개 만들던 기억이 남? Class ABC{ int A; int B; int C; ABC(int a){ this.A =a; } ABC(int a,int b){ this.A = a; this.B = b; } ABC(int a,int b,int c){ this.A = a; this.B = b; this.C = c; } } 저 망할 오버로딩 반복하는 작업을 줄이기 위해 만든거임 아래는 dart 코드로 만들어진 생성자 Class ABC({this.A = 0, this.B = 0, this.C = 0}); 사용법은 아래와 같다 생성자({ this.변수 = 초기값, this.변수 = 초기값, .....}) 그럼 아래와 같이 객체생성이 가능하다 ABC({A: 10}); ABC(.. 2021. 7. 20.
반응형