Dart : https://dart.dev/guides/language/language-tour
1. Extension methodes
- Dart 2.7에 도입되었다
- IDE에서 코드 완성을 사용하는 경우 일반 메서드와 함께 확장 메서드를 제안한다
- 사용 방법
- extension <extension name> on <type> { (<member definition>)* }
// 확장함수
extension NumberParsing on String {
int parseInt() {
return int.parse(this);
}
// ···
}
// 아래와 같이 사용할 수 있다
import 'string_apis.dart';
...
print('42'.padLeft(5)); // Use a String method.
int.parse('42')
print('42'.parseInt()); // 위와 같지만 이처럼 String 확장함수로 사용 가능
2. Enum
- 고정된 상수의 값들을 열거 타입으로 나타내는데 유용하다
- enum 키워드를 사용해서 정의한다
- enum 의 각 값에는 선언에서 0부터 시작하는 위치를 반환하는 인덱스인 getter 가 있다
- switch 문에서 enum 을 사용 할 수 있다
- enum 타입에는 다음과 같은 제한이 있다
- 하위 클래스, mixin 또는 implement 할 수 없다
- 명시적으로 인스턴스화 할 수 없다
enum Color { red, green, blue }
assert(Color.red.index == 0);
assert(Color.green.index == 1);
assert(Color.blue.index == 2);
// Color.values 로 enum 의 모든 타입들을 List 로 가져올 수 있다
List<Color> colors = Color.values;
assert(colors[2] == Color.blue);
// switch 문
var aColor = Color.blue;
switch (aColor) {
case Color.red:
print('Red as roses!');
break;
case Color.green:
print('Green as grass!');
break;
default: // Without this, you see a WARNING.
print(aColor); // 'Color.blue'
}
3. Mixins
- 믹스인은 여러 클래스 계층에서 클래스의 코드를 재사용하는 방법이다
- with 키워드를 사용하면 상속하지 않고 다른 클래스의 기능을 가져오거나 override 할 수 있다
- 믹스인을 구현하려면 생성자를 선언하지 않는 클래스를 만든다
- 믹스인을 일반 클래스로 사용하려면 class 대신 mixin 키워드를 사용한다
- ex) mixin Musical { ... }
class Musical {
bool canPlayPiano = false;
bool canCompose = false;
bool canConduct = false;
void entertainMe() {
...
}
}
class Musician extends Performer {
// ···
}
class Maestro extends Musician
with Musical, Aggressive, Demented {
Maestro(String maestroName) {
name = maestroName;
canConduct = true;
}
}
- 특정 타입만 믹스인을 사용할 수 있도록 지정하려면 (mixin이 정의하지 않은 메서드를 호출 할 수 있도록) on 을 사용하여 필요한 수퍼 클래스를 지정한다
mixin MusicalPerformer on Musician {
// ···
}
'기타개발 > Flutter' 카테고리의 다른 글
Dart #9 : Library (1) | 2020.08.28 |
---|---|
Dart #8 : Generics (0) | 2020.08.28 |
Dart #6 : Abstract, Implicit interface, Extends (0) | 2020.08.28 |
Dart #5 : Classes, Constructor (0) | 2020.08.28 |
Dart #4 : if-else, for/while/do-while, switch, exceptions (0) | 2020.08.27 |
댓글