這對我來說似乎相當古怪,完全讓我置身於願意使用普通java的人身邊。在寫一個Groovy基於應用程序我遇到這樣的事情:Groovy數學有什麼問題?
int filesDaily1 = (item.filesDaily ==~ /^[0-9]+$/) ?
Integer.parseInt(item.filesDaily) : item.filesDaily.substring(0, item.filesDaily.indexOf('.'))
def filesDaily = (item.filesDaily ==~ /^[0-9]+$/) ?
Integer.parseInt(item.filesDaily) : item.filesDaily.substring(0, item.filesDaily.indexOf('.'))
所以,明知item.filesDaily是值的String「1 .. *」怎麼都不可能,那filesDaily1等於49 filesDaily等於1?
更重要的是,試圖做類似
int numOfExpectedEntries = filesDaily * item.daysToCheck
時拋出一個異常說
Cannot cast object '111' with class 'java.lang.String' to class 'int'
指向的代碼與乘法,準確的線。這怎麼可能發生?
+1這顯然是Groovy 2.0中被刪除的東西之一,因爲它很混亂......單個char字符串通過'char'轉換爲'int' ...多字符字符串拋出異常 –
是的。 ..在發佈後幾秒鐘就注意到了它。雖然異常消息仍然模糊。 –
@den,認爲你可以改變三元表達式爲'int filesDaily1 = Integer.parseInt((item.filesDaily =〜/^([0-9]+).*$/)[0] [1])'which *可能會更簡單...否則;-) –