2010-06-27 198 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