케이스 클래스로 정의한 DAO 객체가 있습니다. 나는 그들이 사용할 수 있습니다 전에이 계산되고 싶지 않기 때문에def vs lazy val in case 클래스
case class StudentDAO(id: Int) {
def getGPA: Double = // Expensive database lookup goes here
def getRank: Int = // Another expensive database operation and computation goes here
def getScoreCard: File = // Expensive file lookup goes here
}
자연스럽게 val
들 getGPA
및 getRank
및 getScoreCard
def
들하고하지 않을 것입니다.
def
대신 lazy val
으로 표시된 경우 성능에 미치는 영향은 무엇입니까? 내가 그들을 lazy val
로 만들고 싶은 이유는 다음과 같습니다 : 나는 아이디가 "i"인 학생을 위해 매번 순위를 재 계산하고 싶지 않습니다.
나는 대부분의 차이에 대해있는 아래와 같은 몇 가지 질문이 있기 때문에이 중복으로 표시되지 않습니다 바라고 :
When to use val, def, and lazy val in Scala?
def or val or lazy val for grammar rules?
`def` vs `val` vs `lazy val` evaluation in Scala
이 퀘스트 on은 비용이 많이 드는 작업에 대해 method
과 lazy val
을 만드는 데 소요되는 비용 (CPU와 메모리 간의 절충)을 목표로하고 있으며, 다른 작업에 대해 제안 할만한 이유와 이유는 무엇입니까?
편집 : @ om-nom-nom. 의견을 보내 주셔서 감사합니다. 내가 찾는 것을 더 분명히해야했습니다.
은 여기 읽기 : 객체의 문자열 표현을 캐시Use of lazy val for caching string representation
(@Dave Griffith's answer 참조). 나는 그것을 대신 def
들으시겠습니까? * 게으른 발은 당신에게 더 많은 10 바이트와 200 CPU주기를 소비합니까? * –
@ om-nom-nom : 정확히는 아닙니다. 내 편집을 참조하십시오 :) –