如何switch在 Dart 的 getter 中定義陳述句?
// Doesn't work... ?
get String buttonText => {
switch (step) {
case 1: return "Register >";
case 2: return "Confirmation >";
}
throw "Invalid step";
}
它失敗了,看起來像一個語法錯誤:
期望找到 '}'.dart(expected_token)
我覺得這很奇怪,因為它在函式形式中作業得很好:
// Works fine... ?
String buttonText() {
switch (step) {
case 1: return "Register >";
case 2: return "Confirmation >";
}
throw "Invalid step";
}
uj5u.com熱心網友回復:
洗掉胖箭頭=>,它應該可以正常作業。
String get buttonText {
....
在 dart 中,您只能有一個或另一個:要么有大括號,要么有一個粗箭頭。在大括號的情況下,您必須有一個 return 陳述句。在粗箭頭的情況下,它后面的任何運算式都將是回傳值。
// either
String get one => "1";
// or
String get one {
return "1";
}
編輯:(基于cameron1024的評論)
該規則的唯一例外是如果您要回傳一個映射文字,例如:someFunction() => {}這是一個回傳空集的函式。
uj5u.com熱心網友回復:
我相信您將其與 JS/TS (probably?) 混淆了。如檔案中所述,
“在箭頭 (=>) 和分號 (;) 之間只能出現運算式——而不是陳述句——”
而且,
=> expr 語法是 { return expr; 的簡寫。}.
與 JS 不同,=> { expr }是無效的,{ expr }應該使用多行陳述句代替。
注意:這條規則不僅適用于 getter,也適用于函式和 setter。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/330995.html
上一篇:計時器不會停止
下一篇:顫動垂直滑動并避免滾動串列視圖
