1
보통val
(lazy
이 아님) - 정확히 평가되는 시점은 언제입니까?평가는 정확히 평가되는 시점은 언제입니까?
클래스 및 싱글 톤 개체의 경우 클래스/개체가 인스턴스화 될 때라고 생각합니다. 그리고 특성을 구현하는 클래스가 인스턴스화 될 때. 패키지 객체의 경우 잘 모르겠습니다. 또한
class Test {
val someList = (1 to 1000) // evaluated when it's Test is instantiated
}
object Test {
val someList = (1 to 1000) // evaluated when Test gets instantiated
}
trait Test {
val someList = (1 to 1000) // evaluated when a class implementing Test is instantiated
}
package object Test {
val someList = (1 to 1000) // ???
}
는 먼저 접근 때와 def
lazy val
이 모두 계산되어 주어진 val
한번만 평가 그들 사이의 유일한 주요 차이는? 성능 관점에서
class Test {
lazy val someList = (1 to 1000) // evaluated at access time, once
def someList = (1 to 1000) // evaluated at access time for each access
}
, 내 현재의 가정은 빨리 될 것입니다 이미 평가
val
의
def
또는 (같은 일의)
val
하지만, 이후의 액세스의 첫 번째 액세스 사이에 차이가 (기본적으로이 없다는 것입니다 평가되는 것이 무엇이든간에 상당한 것으로 가정).
따라서 한 번만 평가해야하는 큰 목록이있는 경우 val
을 사용해야합니다. (사용하지 않을 것이라는 확신이 없으면 첫 번째 액세스의 성능은 저에게 문제가되지 않습니다. a lazy
하나)?
확인을위한 환호. – Nio