2017-07-10 144 views
3

不同類型的產生編譯錯誤,下面的代碼不能編譯:爲什麼==在科特林

if ("2" == 3) { 
    //do something 
} 

Error: Kotlin: Operator '==' cannot be applied to 'String' and 'Int'

然而,科特林文檔說這是結構性的平等,被轉換爲a?.equals(b) ?: (b === null)https://kotlinlang.org/docs/reference/equality.html

那麼這裏究竟發生了什麼?它是如何工作的?

回答

0

這是一個在youtrack中報告爲KT-4071的Kotlin錯誤,優先級爲Major,所以我認爲它會很快修復。例如:

val ok = "2".equals(3) // works fine 
val error = "2" == 3 // compilation error 
+0

我認爲該錯誤是在討論相關的警告,而不是錯誤本身,這看起來是故意的。 – oshai

+0

@oshai編號記者描述了一個編譯錯誤報告爲:**「EQUALITY_NOT_APPLICABLE」**。而記者希望這樣的錯誤轉化爲警告。 –

+0

可能你是對的。但是,該錯誤創建於2013年10月12日,所以我懷疑JB不打算改變它的行爲。 – oshai