问题
更多是出于好奇,但我想知道如何将if语句重构为更清晰/更脆弱的东西。根据我的阅读,多态可能有用吗?
在示例中,我只想在color:'red'
为真的情况下返回第一辆车。
的CoffeeScript
example: () ->
cars = [{color:'red', reg:'111'},{color:'blue', reg:'666'}]
if cars[0].color is 'red'
then cars[0]
else cars[1]
的Javascript
example: function() {
var cars = [{color:'red',reg:'111'},{color:'blue',reg:'666'}];
if (cars[0].color === 'red') {
return cars[0];
} else {
return cars[1];
}
}
我理解这个问题可能由于模糊性而关闭或移动
答案 0 :(得分:6)
您可以使用三元运算符,其语法为condition ? result1 : result2;
return cars[0].color === 'red' ? colors[0] : colors[1]
答案 1 :(得分:3)
? :运算符就是这样,一个“更清洁”的if-else
http://msdn.microsoft.com/en-us/library/ty67wk28.aspx
classify = (input < 0) ? "negative" : "positive";
还有更大组合的switch语句:
http://www.w3schools.com/js/js_switch.asp
switch(n)
{
case 1:
execute code block 1
break;
case 2:
execute code block 2
break;
default:
code to be executed if n is different from case 1 and 2
}
多态性是一种抽象概念,而不是编写语句的方法。这是创建方法/函数/类/等的实践,其中类型至少是SOMEWHAT模糊不清。因此,如果为参数1提供了一个整数,则相同的方法可以返回结果,就像您将数组提供给相同的参数一样。
答案 2 :(得分:2)
只是为了好玩:
// red -> +false -> 0
// not red -> +true -> 1
return cars[+(cars[0].color !== 'red')];
答案 3 :(得分:1)
当您不想使用?
语句时,主要使用三元运算符if-else
:
example: function() {
var cars = [{color:'red',reg:'111'},{color:'blue',reg:'666'}];
return cars[0].color === 'red' ? cars[0] : cars[1];
}
答案 4 :(得分:1)
将汽车变成一个物体:
function Car(options) {
this.options = {};
// Some default options for your object
$.extend(this.options, {
color: "green",
buildYear: 1990,
tires: 4,
brand: "merceded"
}, options);
}
// A method registered on the prototype
Car.prototype.getColor = function () {
return this.options.color;
};
var myToyota = new Car({
brand: "toyota"
});
console.log("My Toyota is: "+ myToyota.getColor());
请记住,您可以通过多种方式在JavaScript中使用对象/继承 咖啡脚本有自己的语法糖用于使用classes =&gt; http://coffeescript.org/#classes
答案 5 :(得分:0)
const example = () => {
var cars = [{color:'red',reg:'111'},{color:'blue',reg:'666'}];
return (cars[0].color === 'red' && cars[0]) ||
cars[1];
}