tôi gặp phải đoạn mã sau trong vấn đề đặc biệt Scala JAXMag của:Sử dụng val lười biếng cho bộ nhớ đệm chuỗi đại diện
package com.weiglewilczek.gameoflife
case class Cell(x: Int, y: Int) {
override def toString = position
private lazy val position = "(%s, %s)".format(x, y)
}
Liệu việc sử dụng lazy val
trong đoạn code trên cung cấp hiệu suất đáng kể hơn so với đoạn mã sau?
package com.weiglewilczek.gameoflife
case class Cell(x: Int, y: Int) {
override def toString = "(%s, %s)".format(x, y)
}
Hoặc chỉ là trường hợp tối ưu hóa không cần thiết?
lười nên đẩy tính toán giá trị cho đến khi nó được gọi. Tuy nhiên, câu hỏi hay. Liệu nó tạo ra một đối tượng để giữ chức năng để đánh giá? – wheaties
Để bạn biết, bạn có thể nhận định dạng chuỗi đó bằng cách gọi '(x, y) .toString' –