17
我見過兩種方式(一個比另一個)聲明implicit
爲類型類型斯卡拉。斯卡拉隱式對象vs隱式val
implicit val instance1 = new Typeclass { def do = ??? }
implicit object instance2 extends Typeclass { def do = ??? }
它們有什麼不同?在某些時候,人們應該選擇另一個嗎?我發現implicit val
比implicit object
更常用,我還沒有找到關於implicit object
的許多資源。
因此,決定使用隱式對象與val來取決於是否更喜歡懶惰或嚴格的初始化? –
這可能是一個考慮因素(儘管你總是可以用'lazy val'來獲得'val'的懶惰),但不是唯一的。例如,'val'成員可以在子類中重寫,而'object'成員不能。我相信還有很多其他的區別。 –