我真的很新使用條件(三元)運算符。是否可以在這個操作符中放置一個switch語句?是否可以將一個switch語句放入一個有條件(三元)的內部?
這是我的嘗試:
function find(cn, romanNum) {
if (cn >= 1 && cn <= 3) {
return repeatString(romanNum[2], cn);
}
cn > 5 && cn < 9 ? return romanNum[1] + repeatString(romanNum[2], cn - 5) : switch(cn) {
case 4:
return romanNum[2] + romanNum[1];
case 5:
return romanNum[1];
case 9:
return romanNum[2] + romanNum[0];
}
}
我做錯了,我知道,但它是什麼?每個人在某個時間點都是新手。
錯誤:
- 預計一個標識符,而是看到了
'return'
。 - 預計
':'
而代之以看到'romanNum'
。 - 缺少分號。
- 預計
'}'
以匹配線58'{'
,而是看到':'
這是正確的ES5代碼:
function find(cn, romanNum) {
if (cn >= 1 && cn <= 3) {
return repeatString(romanNum[2], cn);
} else if (cn == 4) {
return romanNum[2] + romanNum[1];
} else if (cn == 5) {
return romanNum[1];
} else if (cn == 9) {
return romanNum[2] + romanNum[0];
}
if (cn > 5 && cn < 9) {
return romanNum[1] + repeatString(romanNum[2], cn - 5);
}
}
幫助?
不,這是不可能的。由於'?:'是一個運算符,它的操作數必須是表達式,但'switch'是一個語句 - 不是表達式。 (與'return'一樣。)你可能一直希望https://github.com/tc39/proposal-pattern-matching? – Ryan
不要在這裏強制使用三元組。 Ternarys專門用於評估兩種價值之一。你在這裏使用是濫用。只要我們一個如果。 – Carcigenicate
爲什麼你要編寫這種神祕的代碼呢? –