gradle 기준
"io.reactivex.rxjava2:rxjava:2.2.21"
Rxjava를 코틀린으로 변경해보며 학습하던 중에 Observable의 fromArray를 실습했다.
java에서는 배열을 인자로 넣었을 때 각각의 요소에 접근할 수 있었지만,
kotlin에서는 주소값으로 전달되어 오류가 발생했다.
이를 해결하기 위해 인터넷 검색을 해보았고 많은 개발자들은 fromArray 대신 fromIterable을 사용하기를 권장했다.
그래서 kotlin에서는 fromArray를 사용할 수 없는거구나라고 생각하고 번거롭지만 Collection인 list와 같은 구조를 이용했었다.
그러던 중에 갑자기 C언어에서 배웠던 포인터(*) 개념이 문득 떠올랐다. 그래서 혹시나 하는 마음에 인자에다가 *을 첨부해봤다. 된다!!!!!!!!!!! 되는건 알겠지만 이유를 모르겠다. 아무리 검색해봤지만 방법은 나타나지 않았다. 만약에 원인을 발견한다면 추가적으로 덧붙일 것이다.
fromArray 예시
val balls = arrayOf("1","3","5")
val source = Observable.fromArray(*balls)
.scan { ball1: String, ball2: String ->
"$ball2($ball1)"
}
source.subscribe(::println).dispose()