두 가지 간단한 접근법이 있습니다.
사용 클래스 : 특성 +를 사용
class Person(first: String, last: String) {
val firstName = first.toLowerCase
val lastName = last.toLowerCase()
}
val person = new Person("Adam", "Smith")
println(person.firstName + " " + person.lastName) // adam smith
은 (의 적용 객체) :
trait Person {
val firstName: String
val lastName: String
}
object Person {
def apply(first: String, last: String) = new Person {
override val firstName: String = first.toLowerCase
override val lastName: String = last.toLowerCase
}
}
val person = Person("Adam", "Smith")
println(person.firstName + " " + person.lastName) // adam smith
주 클래스가 new
인스턴스화해야합니다 (apply()
로 만든) 특성은하지 않지만.
왜 케이스 클래스가 없습니까? 글쎄요, 그들은 ADTs (abstract data types)로서의 역할을하도록 설계되었습니다. 기본적으로, 그들은 어떤 논리없이 어떤 데이터를위한 컨테이너로 생각됩니다. 그렇기 때문에 그들은 apply()
을 즉시 사용할 수 있습니다. 이를 재정의하려면 클래스에 사례 클래스의 의미가 없음을 의미합니다.
@prayag가 당신이 그것을 케이스 클래스에 넣도록 돕기 위해 노력했다는 것을 알 수 있습니다. 그러나 심각하지 않으면, 질문에 그렇게 말하면, 그것을 만든다.
나는 누가 당신의 대답과 내 질문을 downvoted 모르겠다. 그러나 나는 당신의 답을 upvoted. 내가 제공 한 링크 중 아무 것도 나에게 답을주지 못했다. –