为什么此代码为什么在*和+运算符上引发invalidAssignmentOperator错误?
<div id="container">
<div>
<img src='https://images.pexels.com/photos/853168/pexels-photo-853168.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500' />
</div>
<div>
<img src='https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRWNjJlrLa7zz1sxYt9pabVcLkdO3rBucsFDACJRqifXknjU1xV' />
</div>
<div>
<img src='https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQx2AX6jE_BuRr1_Bce2isaDKwv7ZtBiG9Rlwo4VuMZNqRMkV_L' />
</div>
<div>
<img src='https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTg4Il-0K1k0wgK_47FURvRl9-K7sjPvK8_DefbmrOVMdxcPOcE' />
</div>
</div>
答案 0 :(得分:2)
您的代码有几个问题:
平等检查需求==
:t=500
应该是t==500
当您具有lambda这样的复杂代码时,return
语句不是隐式的:因此t*t
不会隐式返回。
通过将两个整数相乘/相加,您试图返回一个integer
值,而您期望的返回类型是double
,因此在那里出现编译问题。
类似的事情会起作用:
public static Function<Integer, Integer> tariff = t -> {
if (t == 500) {
return t * t;
} else {
return t + t;
}
};
隐性收益适用于以下情况:
public static Function<Integer, Integer> tariff = t -> (t == 500) ? t * t : t + t;
答案 1 :(得分:0)
{}
需要使用return
关键字==
而不是=
Double
时,您需要强制转换(double)
,因为int*int > int
(与+
相同) OR 使用{{ 1}} Function<Integer, Integer>
为简化起见,您可以执行以下操作:
Function<Integer, Double> tariff = t -> {
if(t==500) {
return (double)t*t;
} else {
return (double)t+t;
}
};
答案 2 :(得分:0)
您的函数抛出了invalidAssignmentOperator,因为您实际上并未将t*t
或t+t
分配给任何东西。您可以尝试使用t*=t
和t+=t
,以便将其实际分配给t
您的方法也不返回任何内容,应该返回任何内容。对于上述想法,更好的解决方案是只返回这些值:
public static Function<Integer, Double> tariff = t -> {
if(t=500) {
return t*t;
} else {
return t+t;
}
};
此外,请确保按照我的代码所示正确地分隔代码。它使阅读变得更加容易。