将var值传递给ruby上的闭包

时间:2014-01-16 11:06:00

标签: ruby closures vagrant

我有一个包含此代码段的Vagrantfile:

  for j in 1..3
    config.vm.define "zookeeper#{j}" do |s|
      puts j
    end
    puts "#{j}"
  end

我的目标是在每次迭代时根据j的值设置IP,但是当Vagrant创建虚拟机时,值始终为3(迭代的最后一个值)

这将打印以下内容:

1
2
3
3 <-- should start with 1
3
3

如何使用每次迭代的值而不是j的最终值?

1 个答案:

答案 0 :(得分:0)

问题与this question基本相关:

  

for循环获得自己的执行上下文,它以副本开头   当前执行上下文,但它没有得到自己的一组   局部变量绑定

我为每个人更改了for,现在它可以工作了:

(1..3).each do |j|
    config.vm.define "zookeeper#{j}" do |s|
      puts j
    end
  end