2.7.2 로컬 함수 사용하기
클래스나 객체 안에서 함수를 정의할 수 있다. 더 나아가 함수 내부에서도 함수를 정의할 수 있다. 다음 코드는 어떤 수보다 작은 모든 소수의 합계를 구하는 약간 복잡한 함수다. 지금은 이 함수의 동작을 이해하지 못해도 좋다. 나중에 모든 내용을 알게 된다. 다만 여기서 sumOfPrimes 함수 정의 안에 isPrime 함수 정의가 들어간다는 사실을 알아두는 것이 중요하다.
fun sumOfPrimes(limit: Int): Long { val seq: Sequence<Long> = sequenceOf(2L) + generateSequence(3L, { it + 2 }).takeWhile{ it < limit } fun isPrime(n: Long): Boolean = seq.takeWhile { it * it <= n }.all { n % it != 0L } return seq.filter(::isPrime).sum() }