2017-08-16 121 views
3

如何通過kotlin中的枚舉類進行篩選? (剛剛學習) 在下面的代碼中,前面定義的enum類是PayStatus {PAID,UNPAID}。通過枚舉類屬性篩選Kotlin

fun nextRentDate(): LocalDate? { 
      return rentPaymentSchedule. 
        filter { it.value.paymentStatus is PayStatus.UNPAID}. 
        minBy { it.value.date.toEpochDay() }?.value?.date 
     } 

我得到的錯誤:科特林:不兼容的類型:PayStatus.UNPAID和枚舉

+2

使用'=='(甚至是'==='這裏),而不是'is'。是用於類型檢查(Java中的instanceof)。 https://kotlinlang.org/docs/reference/typecasts.html,https://kotlinlang.org/docs/reference/equality.html –

+0

不錯,是啊我已經嘗試過==,但得到了一個不同的錯誤,根本問題是我已經在狀態文件和契約文件中定義了枚舉類,所以它被錯誤的文件定義的枚舉類覆蓋。全部排序,謝謝! – mleafer

回答

3

,枚舉值檢查時,必須使用==操作!

0

is關鍵字應該用於類型比較,如描述here。 使用的比較操作是不可能的,因爲編譯器抱怨:

'is' over enum entry is not allowed, use comparison instead

在科特林Comparison進來兩種口味=====

第一個選項,==被編譯成equals(),而後者===等同於Java的==(比較參考文獻)。

正如我們所知,這對於枚舉沒有什麼影響,因爲您可以在this answer中閱讀。