我的代码出现语法错误,我的webpack编译器将我的错误指向我的三元运算符中的switch case
export function computeShipping(weight, location) {
return (dispatch, getState) => {
const state = getState();
const { shippingMatrix } = state.cart;
return shippingMatrix != null
? switch(location) {
case 'provincial':
if ( weight <= 1) {
return shippingMatrix.provincial[0].value;
}
}
: null
}
}
任何人都可以帮助我吗?
建议将不胜感激。 :)
答案 0 :(得分:3)
编译器是完全正确的。 private IQueryable SearchFilterCondition(string filter,string value)
{
var filterParam = filterparameter(filter); //evaluate filterparameter outside of the query
var emailmessage = from a in db.EmailAflAwmMessage
where (filterParam == value)
orderby a.msg_date descending
select new
{
a.subject,
a.msg_date,
};
return emailmessage;
}
语句是语句,不能作为期望表达式的三元运算符的操作数出现。
鉴于此,我无法确切地告诉您对此代码的期望,但我想您想要这样简单的switch
条件:
if
当然,你可以把它变成三元组:
export function computeShipping(weight, location) {
return (dispatch, getState) => {
const {cart: {shippingMatrix}} = getState();
if (shippingMatrix != null && location === 'provincial' && weight <= 1)
return shippingMatrix.provincial[0].value;
else
return null;
}
}
甚至可以将条件的静态部分移到闭包之外:
…
return (shippingMatrix != null && location === 'provincial' && weight <= 1)
? shippingMatrix.provincial[0].value;
: null;
答案 1 :(得分:0)
您不能在表达式中使用语句(如if / switch / for)(如三元表达式)。您也可以这样说if(switch(..){..})
或var x = /*expression*/
。
区分的最简单方法是变量赋值。你可以说var x = for(...)
,但你不能说CloudAppendBlob appendBlob = container.GetAppendBlobReference("myblob.txt")
appendBlob.AppendText("new line");
。想想那些可以有价值的东西,而不是那些无法实现的东西。