2016-10-18 11 views
0
object CardNum extends Enumeration 
{ 
    type CardNum = Value; 
    val THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, 
    TEN, JACK, QUEEN, KING, ACE, TWO = Value 
} 

上記は私の列挙を示しています。私は、列挙の順序を比較したいのですが、それは列挙で定義された順序に従っているかどうかを調べることです。私はcompareTo()メソッドを試しましたが、-1、0、または1の値しか返しません。Javaとは異なり、列挙間の距離を返します。たとえば、私はこのコードを使用しました。スカラ列挙比較注文

1 - println(CardNum.FIVE.compareTo(CardNum.EIGHT)) 
2 - println(CardNum.SEVEN.compareTo(CardNum.EIGHT)) 

文1と文2の両方が私に、ユーザは列挙の順序に従っているかどうかを検出することが私はできないなり-1の同じ結果を与えました。 Javaでは、文1は私に結果-3と文2 -1を与えるので、問題はありません。 Scalaでそうする方法はありますか?すみません、私はScalaでかなり経験がありません。

答えて

1

あなたは要素id sの間の差を使用することができます:あなたの答えのための

scala> CardNum.FIVE.id - CardNum.EIGHT.id 
res1: Int = -3 

scala> CardNum.SEVEN.id - CardNum.EIGHT.id 
res2: Int = -1 
+0

感謝を。私はそれらをリストに入れ、それらを比較するためにindexOfメソッドを使用することを考えていました。しかし、IDが動作するように見えます。どうもありがとう。 – Ginsan