종종 유형 별칭을 사용하여 스칼라에서 새로운 클래스 생성을 피하기를 원합니다. 그러나 이러한 유형의 정적 메서드도 필요합니다. CardValue 유형 예를 들어 다음과 같은 고려 :스칼라 : 객체 별칭을 입력하십시오.
package object cards {
/**
* Type representing card values from 2 to A
*/
type CardValue = Byte
}
object CardValue {
/**
* Creates CardValue
*
* @param value value index from 0 (2) o 12(A)
* @tparam T any Numeric type which can be converted to Byte
* @return new CardValue
*/
def apply[T <% Byte](value: T): Card = {
require(value >= 0 && value < 13, "Wrong card value index. CardValue is enumeration from 0 to 12.")
value
}
/**
*
* @return Correct string for card value
*/
override def toString: String = {
case 8 => "T"
case 9 => "J"
case 10 => "Q"
case 11 => "K"
case 12 => "A"
case x: Number => (x.byteValue() + 2).toString
}
}
이 코드로 현재 두 가지 문제가 있습니다 1. 그것이 내가 내가 계획 한대로 그 코드 (예를 들어 작동합니다 확실하지 않다 2. 컴파일되지 않습니다 Byte가 아닌 객체에서 toString을 호출 할 것입니다.
이 모든 것을 잘못된 방식으로 수행하고 있으며 별칭을 이와 같이 사용할 수 없습니까?
감사합니다. 내 모든 질문에 대답합니다. 또한 객체 구현을 제거해야합니다. 사례 클래스는 기본 적용 메소드 – GrayR
과 함께 제공됩니다. 당신의'require '를 그것이 속한 case 클래스로 옮길 것이다. –