2010-06-27 229 views

回答

4

也許你的意思是這樣的對象

object MyListMaker { 
    def test[A](a0: A, n: Int): List[A] = (1 to n).map(_ => a0).toList 
} 

scala> MyListMaker.test("Fish",7) 
res0: List[java.lang.String] = List(Fish, Fish, Fish, Fish, Fish, Fish, Fish) 

只有一個副本的存在;如果您想要創建一個通用的方法,請將類型參數添加到方法中(而不是對象)。

+0

你應該使用'apply'而不是'test'的方法,這會給所要求的語法提供更接近的語法。 – 2010-06-28 01:19:17

+0

@丹尼爾 - 也許是吧。我很難弄清楚被問到的是什麼,並且使用'apply'在理解它的工作原理時增加了額外的皺紋。但是,是的,用'def apply ...',它只是'MyListMaker(「Fish」,7)'。我更擔心在沒有任何「A」的情況下列出「A」列表。 – 2010-06-28 15:38:15

2

特徵或對象不能有構造函數參數,並且對象不能有類型參數。

一個對象實際上是一個類的單例實例。因此你不能有一個通用的定義,因爲它只有一個名字。

你最好的選擇是在一個對象內定義一個返回你想要的列表的方法。

+0

那麼生成某種類型的List的最佳方法是什麼? – matiit 2010-06-27 08:29:38

+1

性狀當然*可能*有類型參數!對象可能不是。 – 2010-06-27 14:31:16

+0

澄清:特徵可以具有類型參數,但不包含構造函數參數。回答編輯 – 2010-06-27 15:43:06