我正在学习Alexa& AWS Lambda和我正在尝试确定为什么,当AMAZON.NUMBER类型的插槽被添加到另一个数字(在我的情况下是一个属性)时,这些数字直接在一起就好像它们被连接而不是被添加一样?
'CountSeveralTimes': function(){
var count = this.event.request.intent.slots.count.value;
this.attributes['currentCount'] = this.attributes['currentCount'] + count;
this.response.speak("Nice Job! You have now counted " +
this.attributes['currentCount']+ " times.").listen();
this.emit(':responseReady');
},
假设我运行上面的一段代码,其值为“count”,其类型为插槽类型AMAZON.NUMBER,为10,currentCount为10.而不是将10 + 10添加到评估为20,而不是而是返回“好工作!你现在已经计算了1010次。”我尝试通过在它们的添加之间放置一个随机数来调试,看看哪一个添加不正确。属性(currentCount)正确添加,但插槽中的count变量没有。
非常感谢任何帮助。
答案 0 :(得分:1)
这是一个JavaScript问题。您可能认为this.event.request.intent.slots.count.value
类型为string
,而不是number
。
这意味着,表达式this.attributes['currentCount'] + count
具有不形式number + number
,这将导致加号充当算术加法运算符,这就是您想要的。
要解决此问题,请显式键入操作数:
this.attributes['currentCount'] = Number( this.attributes['currentCount'] ) +
Number( count );