Tôi đã thấy hai cách (một cách nhỏ hơn cách khác) tuyên bố implicit
cho mẫu chữ số trong Scala.Đối tượng tiềm ẩn Scala vs implicit val
implicit val instance1 = new Typeclass { def do = ??? }
implicit object instance2 extends Typeclass { def do = ??? }
Chúng khác nhau như thế nào? Nên một người thích cái này cho người khác trong một thời gian nhất định? Tôi tìm thấy implicit val
thường được sử dụng nhiều hơn implicit object
và tôi chưa tìm thấy nhiều tài nguyên về implicit object
.
Vì vậy, quyết định sử dụng 'đối tượng' ẩn 'so với' val' phụ thuộc vào việc có nên khởi tạo lười biếng hay nghiêm ngặt không? –
Đó có thể là một sự cân nhắc (mặc dù bạn luôn có thể sử dụng 'lazy val' để có được sự lười biếng với một' val'), nhưng không phải là duy nhất. Ví dụ, một thành viên 'val' có thể được ghi đè trong một lớp con trong khi một thành viên' object' không thể. Tôi chắc chắn có rất nhiều sự khác biệt khác. –