[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가 없으면 ;(세미콜론)을 대신 사용할 수 있다는 것입니다.
모두 유용하셨길 바라며, 오늘도 즐거운 하루 되시길 바랍니다.

댓글

이 블로그의 인기 게시물

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

USB를 뒤는 괜찮은데 앞에 꽂으면 인식이 힘들다?

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭