假設我有以下代碼如何在Scala中創建對象列表(即單例)?
trait T
object O extends T
現在假設我想創建一個大小爲10的List[T]
,由O. 填充換句話說,列表看起來應該像(O, O, O,..., O)
。
試圖按照通常的斯卡拉方式(1 until 10) map (x => O) toList
創建一個List[O.type]
。
謝謝。
假設我有以下代碼如何在Scala中創建對象列表(即單例)?
trait T
object O extends T
現在假設我想創建一個大小爲10的List[T]
,由O. 填充換句話說,列表看起來應該像(O, O, O,..., O)
。
試圖按照通常的斯卡拉方式(1 until 10) map (x => O) toList
創建一個List[O.type]
。
謝謝。
的問題是,斯卡拉推斷的最具體類型。在你的情況下,O
對象的具體類型:O.type
。所以你需要精確的類型。
順便說一句,TT不是階的方式做到這一點,這是更好地做:
List.fill(10)(O)
但它不會產生任何List[T]
。所以你需要做的:
List.fill[T](10)(O)
顯式指定類型:
val l: List[T] = (1 until 10) map (x => O) toList
我不知道我理解這個問題。代碼'val list:List [T] =(1至10)map(x => O)toList'適合我。此外,'List.fill(10)(O)'可能更整潔... – cmbaxter
它正確地創建列表。列表[O.type]是結果列表的類型,而不是列表本身。 –