모델 개체 집합과 래퍼 개체 집합을 사용하여 추가 기능을 제공합니다.스칼라 - 함수 허용 블록에 대한 약식 인수로 컴패니언 개체 사용
class Model
class ModelWrapper(val m: Model)
object ModelWrapper { def apply(model: Model) = new ModelWrapper(model) }
val m1 = new Model; val m2 = new Model; val m3 = new Model
List(m1, m2, m3).map(ModelWrapper)
그래서
그 ModelWrapper
,로 전달 : 나는이 같은 List("x", "y", "z").foreach(println)
을 쓸 수 같은 속기를 사용하여 간결 래퍼 객체 모델 객체의 컬렉션을 변환 할 수 있도록하고 싶습니다
가
인수는 컴패니언 개체에 대한 호출ModelWrapper(_)
으로 변환됩니다. 나는이 때
그러나, 나는 형식 불일치 오류 다음과 같이 얻을 : 나는 case class
ModelWrapper
을 할 경우,
<console>:14: error: type mismatch;
found : ModelWrapper.type (with underlying type object ModelWrapper)
required: Model => ?
List(m1, m2, m3).map(ModelWrapper)
그러나을하고 동반자 개체를 제거, 그것을 작동합니다. 내가 추가하는 동작이 케이스 클래스가 작동하는 전반적인 방식과 잘 맞지 않아 케이스 클래스로 만들고 싶지 않습니다. 매개 변수와 동일한 모델 클래스를 갖는 두 개의 래퍼 클래스는 반드시 같을 필요는 없습니다.
제가 알고 싶습니다.이 경우 사례 클래스와 동반 개체의 차이점은 무엇입니까? 케이스 클래스를 사용하지 않고도 원하는 것을 얻을 수 있습니까?
나는 티켓을 열어 본다. 그 행동은 의심스럽게 모순 된 것처럼 보입니다. –
나는 그렇게 할 것이다 ... – Russell