0
我經常想通過使用類型別名避免在scala中創建新的類。但我也需要一些靜態方法來處理這些類型。 考慮下面的例子爲CardValue類型:Scala:輸入對象的別名
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.我不知道該代碼將作爲我的計劃(例如它將從對象調用toString而不是來自Byte)。
我是不是這樣做了所有錯誤的方法,並輸入別名不能像這樣使用?
這有用,謝謝,它回答了我所有的問題。另外,您需要刪除對象實現。案例類帶有默認應用方法 – GrayR
您是對的。我會把你的'require'移到它所屬的case類。 –