2

问题

更多是出于好奇,但我想知道如何将 if 语句重构为更干净/不那么脆弱的东西。根据我的阅读,多态性可能有用吗?

color:'red'在示例中,如果为真,我只想返回第一辆车。

咖啡脚本

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];
    }
  }

我理解这个问题可能由于模棱两可的性质而关闭或移动

4

6 回答 6

6

您可以使用三元运算符,它的语法是condition ? result1 : result2;

return cars[0].color === 'red' ? colors[0] : colors[1]
于 2013-10-09T12:18:29.060 回答
6

? : 运算符就是这样,一个“更干净”的 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
}

多态性是一个抽象概念,而不是一种编写语句的方式。这是创建类型至少有些模棱两可的方法/函数/类/等的做法。因此,如果为参数 1 提供整数,则相同的方法可以返回结果,就像将数组提供给相同的参数一样。

于 2013-10-09T12:19:06.283 回答
2

纯娱乐 :

// red     -> +false -> 0
// not red -> +true  -> 1
return cars[+(cars[0].color !== 'red')];
于 2013-10-09T12:39:07.747 回答
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());

示例:http: //jsfiddle.net/YthH8/

请记住,您可以通过多种方式在 JavaScript 中使用对象/继承。
Coffee 脚本有自己的语法糖来使用类 => http://coffeescript.org/#classes

于 2013-10-09T12:45:28.220 回答
1

?当您不想使用if-else语句时,主要使用ternar 运算符:

example: function() {
    var cars = [{color:'red',reg:'111'},{color:'blue',reg:'666'}];

    return cars[0].color === 'red' ? cars[0] : cars[1];
  }
于 2013-10-09T12:19:12.487 回答
0

const example = () => {
    var cars = [{color:'red',reg:'111'},{color:'blue',reg:'666'}];
    return (cars[0].color === 'red' && cars[0]) ||
        cars[1];
}

于 2018-10-05T13:08:22.800 回答