我正在將AS3代碼轉換爲Dart。我已經部分翻譯了以下,但我堅持如何處理AS3參數對象。任何指導?什麼是Dart相當於AS3參數對象?
void setLabelTextColors([int upColor = 0, int overColor = 0, int downColor = 0]) {
_lcUp = arguments.length > 0 ? upColor : -1;
...
}
我正在將AS3代碼轉換爲Dart。我已經部分翻譯了以下,但我堅持如何處理AS3參數對象。任何指導?什麼是Dart相當於AS3參數對象?
void setLabelTextColors([int upColor = 0, int overColor = 0, int downColor = 0]) {
_lcUp = arguments.length > 0 ? upColor : -1;
...
}
從來沒有聽說過飛鏢的,但是這是代碼轉換
lcUp = -1
if(upColor!=0){
lcUp = upColor;
}
可以使用問號運營商,看是否參數已經給出與否。
void setLabelTextColors([int upColor = 0, int overColor = 0, int downColor = 0]) {
_lcUp = ?upColor ? upColor : -1;
...
}
Btw:問號運營商被一些開發者認爲是不好的風格(並且有關於再次移除它的討論)。其中一個原因是它很難包裝功能。 – 2013-05-02 21:37:02
void setLabelTextColors([int upColor, int overColor, int downColor]) {
int _lcUp = (upColor!=null) ? upColor : -1;
// ...
}
如果你的代碼之間的差異 「參數未提供」 和 「參數爲空」,你也可以用這個來代替:
void setLabelTextColors([int upColor, int overColor, int downColor]) {
int _lcUp = (?upColor) ? upColor : -1;
// ...
}
UPDATE 第二代碼片段在將來的某個時間點不再有效 - see this issue.
Thi s是不正確的。如果調用setLabelTextColors()時未提供參數(arguments.length等於零),則_lcUp的值應爲-1。 – user2267395 2013-05-02 19:10:26
其實,你錯了,upColor的默認值是0,這是第一個參數。因此,如果沒有參數傳遞給函數,那麼upColor將默認爲0,此時arguments.length也將爲0.在我的代碼中,lCUp將始終爲-1,直到upColor的值不等於0. – 2013-05-03 12:39:24