鉴于我有两个相同类型的对象lower
和upper
,并且它们使用方法succ
返回连续值(如在ruby中),并且可以使用<
进行比较。
在简单的javascript中我可以写:
for (var i = lower; i <= upper; i = i.succ()) {
// …
}
使用原型我可以写得更短:
$R(lower, upper).each(function(i){
// …
}, this)
在coffeescript中使用原型我可以写得更短:
$R(lower, upper).each (i)->
# …
, this
但是没有原型,我发现只有这样才能做同样的事情:
i = lower
while i <= upper
# …
i = i.succ()
还有什么更短的吗?
答案 0 :(得分:1)
我认为你是对的
i = lower
while i < upper
# …
i = i.succ()
是在不使用函数的情况下编写此函数的最短方法。当然,你可以在不使用Prototype的情况下编写这样的函数:
eachSucc = (lower, upper, func) ->
i = lower
while i < upper
func i
i = i.succ()
然后你可以这样称呼它:
eachSucc lower, upper, (i) -> ...
答案 1 :(得分:0)