2
這個小程序在飛鏢編輯器中生成此警告。飛鏢編輯器中的非常奇怪的警告。我可以以某種方式禁用它們嗎?
這只是示例,而不是真實的代碼。但真正的代碼是相似的(並且更大)。
void main() {
var what_I_if_not_want_compile_to_js;
var so_what = what_I_if_not_want_compile_to_js is double;
}
警告:
附言:「當編譯爲JS,這個測試可能會在左手邊是一個int返回true」
沒問題。但是在我的一個程序中,我有22條這樣的警告(在「Problems」視圖中)。
我可以以某種方式禁用它們嗎?
我無法避免這個測試。這裏是來自真實程序的代碼。 >提示並取消選中「啓用dart2js相關提示」複選框 -
dynamic _cast(value) {
if(value is double) {
value = value.toInt();
}
if(value is int) {
if(value >= -2147483648 && value <= 2147483647) {
return value;
}
value &= 0xffffffff;
return value <= 2147483647 ? value : value - 0x100000000;
} else if(value is CData && value.type is ReferenceType) {
return _cast(value._address);
} else {
return super._cast(value);
}
}
我不知道有什麼辦法來壓制警告。但是,你可以不用'if(value是num)'來代替嗎? 'toInt()'也可以在那裏使用。 – MarioP
@MarioP這個測試'if(value是num)'添加了不必要的開銷,因爲它對'int'的計算結果爲'true'。所以,'intValue.toInt()'並不嚴重。我無法理解以下內容:有了這個警告,Dart開發者想要說他們不推薦使用這個測試,即使代碼永遠不會被編譯成Javascript?或者他們想要說每個Dart代碼都必須用Javascript編譯?我開始使用舊代碼工作,並對此警告感到非常驚訝。 – mezoni
的確如此,但我猜這是性能與維護的關係。無論如何,這是一個有爭議的問題,因爲似乎有解決辦法。但是至於爲什麼這個警告被實現了:我的猜測是基本思路是在開發時警告更好,而不是獲得生產後很難追查的錯誤。畢竟,這個久已知道的bug有很多bug報告。 – MarioP