對於這段代碼,科特林迫使我來處理一個空檢查的情況,而在它沒有其他線路,儘管是同樣的情況:爲什麼我被迫使用!在空檢查的組合?
if (r1 == null && r2 == null)
throw IllegalArgumentException("All nulls!")
else if (r1 == null)
return r2!!.reading // <----- I am forced to !! here
else if (r2 == null)
return r1.reading // <----- The compiler does not complain in this line
這是一個錯誤或功能?
R1和R2丘壑行之有效? – IRus
爲什麼通過消除過程檢查非空值而不是直接檢查非空值?例如'R2 .reading:??R1 .reading:??拋出IllegalArgumentException( 「!所有空值」)' – mfulton26
@ mfulton26了'if'的問題表達並不詳盡,即不覆蓋的情況下當兩個'R1 '和'r2'不爲空。所以,雖然你的建議在某些情況下可能有用,但在這種情況下,它並不等同。 – Ilya