我有这个:
def valid_attributes
{ :email => "some_#{rand(9999)}@thing.com" }
end
Rspec 测试对吗?但我想做这样的事情:
def valid_attributes
static user_id = 0
user_id += 1
{ :email => "some_#{user_id}@thing.com" }
end
我不希望 user_id
可以从除该方法之外的任何地方访问,
这对 Ruby 来说可能吗?
最佳答案
这是一个关闭案例。试试这个
lambda { user_id = 0 self.class.send(:define_method, :valid_attributes) do user_id += 1 { :email => "some_#{user_id}@thing.com" } end }.call
在 lambda 中包装所有内容允许在 lambda 中定义的变量仅存在于范围内。您也可以添加其他方法。祝你好运!
关于ruby - Ruby 中方法的静态局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7168400/