虽然我知道splats,但我仍然不能完全掌握以下代码的最后一行:
class Borrowable extends Decorator
constructor: (@libraryItem) ->
removeBorrower: (borrower) ->
@borrowers[t..t] = [] if ( t = @borrowers.indexOf(borrower) ) > -1顺便说一句,这段代码是从https://github.com/aksharp/Design-Patterns/blob/master/CoffeeScript/Decorator.coffee复制的
我假设这是Destructuring Assignment,我仍然不能完全理解它在幕后发生了什么。
你能帮我澄清一下吗?
发布于 2014-03-30 22:51:31
让我们仔细看看最后一行:
@borrowers[t..t] = [] if ( t = @borrowers.indexOf(borrower) ) > -1我不确定这个表单是否算作解构赋值,可能是。
首先,它调用@borrowers.indexOf(borrower)来检查borrower是否存在于@borrowers数组中,并获取它的索引。
通常使用borrower in @borrowers表单而不是@borrowers.indexOf(borrower) > -1,但在这种情况下,我们还需要元素的索引。
如果borrower出现在@borrowers中,它将获取索引t和t之间的@borrowers数组部分
@borrowers[t..t]即[borrower],并将其分配给空数组[],从而从@borrowers数组中删除borrower。
下面是这个赋值的js类等价物:
@borrowers.splice t, 1https://stackoverflow.com/questions/22744963
复制相似问题