다음 예제는 객체 식의 타입이 익명 객체 타입이며, 지역 변수나 프로퍼티의 타입도 마찬가지일 수 있음을 보여준다.
fun main() { val o = object { // 익명 객체 타입이 추론됨 val x = readLine()!!.toInt() val y = readLine()!!.toInt() } println(o.x + o.y) // 여기서 o 안의 x와 y에 접근할 수 있음 }
하지만 익명 객체 타입은 지역 선언이나 비공개 선언에만 전달될 수 있다. 예를 들어 midPoint 함수를 최상위 함수로 정의하면 객체 멤버에 접근할 때 컴파일 오류가 발생한다.
fun midPoint(xRange: IntRange, yRange: IntRange) = object { val x = (xRange.first + xRange.last)/2 val y = (yRange.first + yRange.last)/2 } fun main() { val midPoint = midPoint(1..5, 2..6) // error: unresolved reference: x // error: unresolved reference: y println("${midPoint.x}, ${midPoint.y}") }