2018년 7월 24일 화요일

[Android] 안드로이드 tools:text에 샘플 텍스트 넣기

안드로이드 레이아웃을 잡을때 샘플 텍스트를 지정 할때가 있는데, 아래와 같은 녀석을 쓰면 편리 하다.

tools:text = "이런것 대신에..."

"@tools:sample/lorem/random" , "@tools:sample/full_names" , "@tools:sample/full_names" ,"@tools:sample/cities"

2018년 7월 11일 수요일

[Kotlin] 코틀린 특징 정리 (스위프트와의 차이, 자바도..)

코틀린 특징 정리 (스위프트와의 차이, 자바도..)

1. static 키워드가 없다 (9)
2. let대신 val 사용 (85)
3. 이름 변경해서 임포트 가능 (80)
  import java.text.SimpleDateFormat as MySimpleDateFormat
4. 파일 위치와 패키지 이름은 달라도 상관 없다. (82)
5. 함수 선언 fun (91)
6. 함수내에 함수 선언 가능 (92)
7. 단일 표현 함수, 반환 타입도 생략 가능 (95)
  fun some(a: Int, b: Int): = a + b
8. 매개변수 이름을 지정 할수 있다. (95)
  fun some(a: Int, b: Int) 일때,
  > some(a = 3, b = 7) 이렇게
9. Infix 함수 (97)
  infix fun Int.testFun(x: Int): Int {
    return this + x
  }
10. 재귀 함수 생성시 tailrec 키워드를 주면 컴파일러가 일반적인 반복문으로 컴파일 함. (101)
  > 단, 재귀 호출을 마지막에 하지 않는 다면 의미가 없다.
11. """ 로 묶어 raw 스트링 표현 (110)
  > 탈출 문자가 없음
12. Any 타입과 when (112)
  > when (obj) {
    1 -> return "One"
    "Hello" -> return "String"
    is Long -> return "Long"
    !is String -> return "Not a String"
    else -> "unknown String"
  }
13. Unit, Nothing 보이드 같은 개념, 제네릭에서 추가 정리 필요 (115)
14. is 캐스팅, !is도 있음 (116)
15. 형 변환 (117)
  > var dbl = 10.toDouble()
16. 배열 생성 (118)
  > arrayOf<T>(...)
  > intArrayOf(), xxxxArrayOf()
  > Array(size: Int, init: (Int) -> T)
17. 코틀린은 switch-case가 없음 (131)
18. 배열 선언 및 초기화에 [], {} 를 사용 할 수 없다. (131)
19. if-else 구문을 표현식으로 사용 가능 (133)
  > val result = if (a > 0) "Big" else "Small"
  > 표현식으로 쓰인 경우 else 부분이 없으면 에러가 발생 한다.
  > 또한 여러 줄인 경우, 마지막 줄이 결과 값이 된다.
20. when 구문 (137)
  > 12, 10 같이 여러 조건 사용 가능
  > in 1..100 같이 범위 지정 가능
  > !in 20..100
  > in list, in array 같이 여러 데이터에 속하는지를 가지고도 분기 가능
  > if-else의 대체용으로 사용 가능
  > when도 표현식으로 사용 가능함
21. for문 (142)
  > for (i in list.indices) // list의 인덱스를 이용
  > for ((index, value) in list.withIndex()) // 인덱스와 값 모두 활용
  > for (i in 1 until 100) 1부터 99까지
  > for (i in 1 until 100 step) 1부터 99까지 2씩 증가
  > for (i in 100 downTo 1) 100부터 1까지
22. continue, break에 라벨 사용 (147)
  > aaa@ for (i in 1..3) {
      for (j in 1..3) {
         if (j > i) break@aaa   // aaa까지 빠져 나감
         println("Do")
      }
  }
23. 전개 연산자 * (149)
  > val list2 = asList(1, 2, *array, 100, 200)
24. 전개 연산자를 매개 변수로 받기
  > fun some(vararg a: String)
25. 일치 연산자 (156)
  > a === b // a와 b가 같은 객체이면 true
  > a !== b // a와 b가 다른 객체이면 true
26. 코틀린은 삼항 연산자가 없다, if-else를 이용하자. (169)

2018년 7월 8일 일요일

[Swift, RxSwift] 매번 헷갈리는 map, flatmap.

 
Single.just(1).map { (input) -> String in
        return "Value = \(input)"
    }.flatMap { (input) -> PrimitiveSequence<SingleTrait, String> in
        Single.just(input + " Desu.")
    }.subscribe(onSuccess: { (result) in
        print(result)
    }).disposed(by: disposeBag)