如何自动递增一个变量,以便每次使用它时,它都会从 0 开始递增 1?
例如:
i = i+1 || 0
arr[i] = "foo"
arr[i] = "bar"
arr[i] = "foobar"
arr #=> ["foo","bar","foobar"]
Run Code Online (Sandbox Code Playgroud)
我收到NoMethodError nil:NilClass 的未定义方法“+”
变量只是一个名称。它没有行为。如果您想要行为,请使用以下方法:
def i
@i ||= -1
@i += 1
end
arr = []
arr[i] = 'foo'
arr[i] = 'bar'
arr[i] = 'foobar'
arr #=> ['foo', 'bar', 'foobar']
Run Code Online (Sandbox Code Playgroud)
或者:
_i = -1
define_method(:i) do
_i += 1
end
arr = []
arr[i] = 'foo'
arr[i] = 'bar'
arr[i] = 'foobar'
arr #=> ['foo', 'bar', 'foobar']
Run Code Online (Sandbox Code Playgroud)
但实际上,你所拥有的只是一种非常复杂的说法
arr = %w[foo bar foobar]
Run Code Online (Sandbox Code Playgroud)
这更清楚了。