[Kotlin] while문 안에서 변수에 대입하기
최근, 코틀린을 사용해 프로젝트를 진행하게 됐습니다. 그러던 중, 파일 I/O 작업이 필요하게 됐죠. 그래서, 평소 자바나 C#에서 하던대로 while문을 작성해봤으나 제대로 작동하지 않았습니다. 아래는 Java 코드입니다. while ((i = zipStream.read(buf)) != - 1 ) { // Do something... } 그리고 아래는 작성했던 코틀린 코드입니다. while ((i = zipStream.read(buf)) != -1) { // Do something... } 같은 것 같다고요? 맞습니다. 동일하게 작성했더니 안 되더라고요. 그래서 방법을 찾아봤습니다. 생각해보니, 람다 가 있었습니다. 익명 함수를 사용한 while문 내에서의 변수 할당 while ({i = zipStream.read(buf); i}() != -1) { // Do something... } 간단히 설명하면, zipStream.read(buf) 의 값을 변수 i 에 할당하고 그 값을 반환하는 익명 함수를 즉시 호출하고, 그 결과를 대조해 while문을 돌리면 되는 것이었죠! 이 과정에서 코틀린의 새로운 문법을 알게 됐습니다. 바로 익명 함수( { ... } )에서 return statement가 없으면 ; (세미콜론)을 대신 사용할 수 있다는 것입니다. 모두 유용하셨길 바라며, 오늘도 즐거운 하루 되시길 바랍니다.