스칼라에서는 toString과 같은 몇 가지 메소드를 제외하고는 List [String]과 같은 클래스를 원합니다.리스트와 거의 같은 클래스를 어떻게 정의 할 수 있습니까?
내가 지금 가지고있는 것은 fqn0 ++ fqn1
이 list0 ++ list1
가 List'; it currently gives a
LinearSeq [문자열]`주는 것처럼, 나에게 FQN
을 제공하는 제가하고 싶은 것은, 그러나
case class FQN(val names : List[String]) extends LinearSeq[String] {
def this(params : String*) { this(List(params : _*)) }
override def toString() : String = {
names.reduce((a,b) => b++"."++a)
}
override def apply(i : Int) = names.apply(i)
override def length() = names.length
override def tail = new FQN(names.tail)
override def head = names.head
override def isEmpty = names.isEmpty
def ::(str : String) = new FQN(str :: names)
}
입니다. 그래서 내가 바라는대로 뭔가가 아닙니다.
또한 FQN
을 케이스 클래스로 사용하여 equals 및 hashCode를 원하는 방식으로 가져 오지만 이것이 최선의 방법인지 여부는 확실하지 않습니다.
List
과 같은 클래스를 만드는 가장 좋은 방법은 무엇입니까? 그러나 특정 방법은 다르게 구현됩니까?
쉽게 사용자 지정 기능을 추가 목록에 암시 적 클래스를 정의 할 수 있습니다. – Ryan
암묵적인 클래스가 어떻게 도움이되는지 잘 모르겠습니다. { \t 재정 데프 toString() : 문자열 = { \t \t names.reduce ("."(A, B) => B ++ ++ A) \t : 나는'암시 클래스 FQN (목록 [문자열] 이름을) 시도 \t} \t}'그렇지만'fqn0 ++ fqn1'은'++'가 FQN의 멤버가 아니라는 오류를줍니다. –
나는 FQN을 전혀 사용하지 않는다고 말하면서, 결과 타입 (예 :'String')이나 다른'List'를 반환하는 함수를 암시 적 클래스에 작성합니다. 스칼라 컬렉션을 구현하는 것은 힘들 수 있습니다. – Ryan