2016-10-18 3 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, которая вернет расстояние между перечислением. Например, я использовал этот код.Scala Enumeration Сравнить Заказать

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