【发布时间】:2011-10-11 04:02:19
【问题描述】:
我是 Ruby 的新手。我正处于尝试用 Ruby 编写东西的阶段,但没有成功。
我正在尝试向一个对象添加一个方法——比如说,一个不起眼的数组。并非针对所有阵列,仅针对一个特定阵列。此方法必须能够访问外部范围内的变量。
我的理解是,我可以使用def 向对象添加方法,但该方法无法访问外部范围内的变量。为此,我需要使用 lambda 或 Proc.new,但我看不到如何将 lambda/proc 作为属性“附加”到数组。
在 JavaScript 中这很简单,正如这个愚蠢的例子所展示的那样:
var x = 3
var array = [1, 2, 3, 4]
array.multiply_by_x = function() {
var i = this.length
while (i--) {
this[i] *= x
}
}
在 Ruby 中是否可以实现与上述类似的事情?
【问题讨论】:
标签: ruby methods lambda lexical-scope