2010-06-27 3 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) 

한 장만 같은 것을 의미 존재; 일반 무언가를 수행하는 메서드를 만들려면 개체가 아닌 메서드에 type 매개 변수를 추가합니다.

+0

'test' 대신에'apply' 메소드를 만들어야합니다. 그러면 어떤 질문을 받았는지에 대한 구문이 훨씬 더 가까워집니다. –

+0

@ 대니얼 - 아마도 그렇습니다. 나는 무엇이 요구되는지를 알아 내는데 어려움을 겪었고,'apply'를 사용하는 것이 그것이 왜 효과가 있는지를 이해하는데 추가적인 주름을 추가시킵니다. 그러나 예,'def apply ... '와 함께하면 MyListMaker ("Fish", 7)가됩니다. 실제로'A '가 없어도'A'의 목록을 만드는 것에 대해 더 걱정했습니다. –

2

특성 또는 개체에는 생성자 매개 변수를 사용할 수 없으며 개체에는 형식 매개 변수를 사용할 수 없습니다.

개체는 실제로 클래스의 싱글 톤 인스턴스입니다. 따라서 이름이 하나뿐이기 때문에 일반 정의를 사용할 수 없습니다.

가장 좋은 방법은 원하는 목록을 반환하는 개체 내에서 메서드를 정의하는 것입니다.

+0

그래서 어떤 유형의 목록을 생성하는 가장 좋은 방법은 무엇입니까? – matiit

+1

특성에는 확실히 유형 매개 변수가있을 수 있습니다! 객체는 그렇지 않을 수도 있습니다. –

+0

특징을 설명하기 : 형질은 유형 매개 변수를 가질 수 있지만 생성자 매개 변수는 가질 수 없습니다. Answer 편집 됨 –