함수 반복되는 작업을 정의하여 코드의 중복을 줄일 수 있는 기능입니다. 반환형을 유추할 수 있을 경우 생략할 수 있습니다. void는 아무것도 반환하지 않는 경우 사용합니다. (생략할 수 있습니다.) 기본적으로 반환형을 명시할 것을 권장합니다. getHello() { return "Hello"; } String getWorld() { return "World"; } void message(String message) { print("${getHello()} ${getWorld()} $message"); } 선택 매개변수 매개 변수의 기본값을 적용하고 싶을 때 사용합니다. 선택 매개변수로 선언하고 싶은 변수를 [] 로 감쌉니다. 매개변수를 전달하지 않으면 기본 값으로 저장됩니다. 기본 값은 컴파일 저장되므..
if 조건이 만족하면 분기처리합니다. * Java처럼 bool타입만 조건에 적용할 수 있다. main() { int a = 2; int b = 3; if (a > b) { } else if (a < b) { } else { } } switch ~ case 일치하는 값을 갖고있는 case로 분기처리합니다. * 다른 언어와 다르게 break문을 필수로 입력해야 합니다. main() { int a = 1; switch(a) { case 1: case 2: print("1 or 2"); break; case 3: print("3"); break; default: print("other"); break; } } for 초기식;조건식;증감식 구조로 이루어져 있습니다. 진행순서 1. 초기식으로 초기화 작업을 진행합니..
산술 연산자 main() { int a = 2; int b = 4; print(a + b); print(a - b); print(a * b); print(a / b); print(a % b); // 나머지 연산자 print(a++); // a값을 반환하고 a증가 print(++a); // a증가시키고 증가된 값 반환 print(b--); print(--b); } 대입 연산자 main() { double a = 2.0; double b = 4.0; print(a = b); print(a += b); // a = a + b print(a -= b); print(a *= b); print(a /= b); print(a %= b); } 비교 연산자 main() { double a = 2.0; double b =..
List 배열 형태로 값을 저장하기 위한 Class, Generic으로 구현되어 다양한 타입을 저장할 수 있습니다. abstract class List implements EfficientLengthIterable { main() { var list1 = [1, 2, 3, 4, 5]; var list2 = List.generate(5, (index) => 0); } Nullable Null값을 저장하기 위한 방법입니다. 변수를 선언할 때 타입 옆에 `?`를 붙이면 됩니다. main() { int? nullInt = null; String? nullString = null; } 정적 변수(final, const) 변수에 값을 저장하고 변경하고 싶지 않을 때가 있습니다. 이럴 때 final, const 키워..

변수(Variable) 값을 저장하기 위한 수단입니다. 유저에게 값을 입력 받거나 연산 도중 값을 저장해야 할 경우 변수에 저장합니다. Dart에서 변수는 C, Java, Kotlin, Python을 섞은 느낌입니다. num 숫자를 저장하기 위한 Class 기본적으로 Object를 상속받고 있습니다. int : 정수를 저장하기 위한 타입 double : 소수를 저장하기 위한 타입 여기서 Dart의 언어 특성으로 인한 다른 언어의 차이점인데 변수의 범위가 실행 환경에 따라 달라진다. Dart언어 특성상 Web, Android, iOS 등 다양한 플랫폼을 지원하고 각 플랫폼마다 조금씩 차이가 있다. (기본적으로 64bit를 지원한다고 생각하면 편함) https://dart.dev/guides/language..
cancen() & cancelAndJoin() Coroutine에서 취소가 어떻게 진행되는지 확인해봅니다. // cancel과 cancelAndJoin의 차이 public suspend fun Job.cancelAndJoin() { cancel() return join() } cancel()을 실행했을 때 취소되지 않고 Coroutine이 계속 실행됩니다. 즉 Coroutine 내부에서 진행될 때 취소를 확인하여 종료할 수 있도록 설계 해야합니다. (개발자가 직접 취소 지점을 정할 수 있습니다.) val job = CoroutineScope(Dispatchers.IO).launch { for (i in 0 until 5) { Log.d("PASS", "Running") Thread.sleep(1000L..
Coroutine Builder CoroutineScope의 확장함수로 Coroutine을 만드는 역할을 합니다. CoroutineScope(Dispatchers.IO).launch { // do something coroutine } launch() 가장 기본적인 Builder입니다. launch()는 Thread를 Blocking하지 않으며Job이라는 객체를 반환합니다. Job은 cancel(), join() 등 의 함수를 가지고 있습니다. launch의 2번때 매개변수로 CoroutineStart가 주어집니다. CoroutineStart으로 시작 방식을 지정할 수 있습니다. fun CoroutineScope.launch( context: CoroutineContext = EmptyCoroutine..
CoroutineContext CoroutineContext는 Coroutine이 어떠한 환경(Thread)에서 실행될지 결정하는 중요한 매개체입니다. CoroutineScope를 만들거나 CoroutineBuilder로 새로운 Coroutine을 만들 때 주로 쓰입니다. 즉 Coroutine Context를 통해 어떠한 Thread로 Dispatch될지 결정합니다. Thread Pool 직접 Thread Pool을 만들고 해당 Thread Pool에서 작동하는 Dispatcher를 만들 수 있습니다. (Dispatcher는 CoroutineContext를 상속받습니다.) val dispatcher = newFixedThreadPoolContext(10, "New Fixed Thread") Corouti..
- Total
- Today
- Yesterday
- null
- observable
- Widget
- ViewModelStoreOwner
- git
- Flutter
- 클린 코드
- Exception
- Kotlin
- 코루틴
- gradle
- DSL
- 클린코드
- commit
- TDD
- 함수
- Coroutine
- ViewModelProvider
- Android
- ConcatAdapter
- DART
- ConcatAdapter.Config
- CancellationException
- rxjava
- Flowable
- isActive
- 보이스카우트 규칙
- clean code
- 연산자
- viewmodel
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |