我主要是一名Rails开发人员,因此在为我公司的Hubot实例编写一个小脚本时,我希望实现以下目标:
robot.brain.data.contacts ||= {}
或者,只在这个新哈希不存在的情况下创建它.我的 idea 是,我希望通过脚本动态添加联系人数组,这样我就不必修改Hubot的源代码,而且我显然不想覆盖添加到其中的任何联系人.
问题:有没有像Rails | |=这样的快速小构造,我可以在Coffeescript中使用它来实现上述目标?
干杯
我主要是一名Rails开发人员,因此在为我公司的Hubot实例编写一个小脚本时,我希望实现以下目标:
robot.brain.data.contacts ||= {}
或者,只在这个新哈希不存在的情况下创建它.我的 idea 是,我希望通过脚本动态添加联系人数组,这样我就不必修改Hubot的源代码,而且我显然不想覆盖添加到其中的任何联系人.
问题:有没有像Rails | |=这样的快速小构造,我可以在Coffeescript中使用它来实现上述目标?
干杯
您可以使用?=
进行条件赋值:
speed ?= 75
?
是CoffeeScript中的"存在运算符",因此它将测试存在性(而不是真实性):
if (typeof speed === "undefined" || speed === null) speed = 75;
不过,在您的情况下,结果JS有点不同,因为您测试的是一个对象属性,而不仅仅是一个变量,所以robot.brain.data.contacts ?= {}
结果如下:
var _base, _ref;
if ((_ref = (_base = robot.brain.data).contacts) != null) {
_ref;
} else {
_base.contacts = {};
};