ruby - block 中的实例变量

标签 ruby

如何将实例变量作为参数传递给 block ?

这在 Ruby 1.9 中不起作用(形式参数不能是实例变量)。

awesome do |foo, @bar|
  puts 'yay'
end

最佳答案

Ruby 1.9 使 block 参数成为 block 的局部参数。这也意味着 block 参数不能再是全局变量或实例变量。您可以根据自己的目的使用闭包:

@foo = 10
1.times do |i|
  puts @foo
end
# => "10"

更新 除了使用实例变量,局部变量可以帮助您:

foo = 10
1.times do |i|
  puts foo
end
# => "10"

在这种情况下,您不会遇到与不同上下文中的代码执行相关的问题。

关于ruby - block 中的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8103352/

相关文章:

ruby-on-rails - 检索数据库数据的 finder 方法的性能

ruby-on-rails - rails : Finding max of array that may contain nil

html - Bootstrap : How to center image in panel heading?

ruby - 如何在ruby中转换为big endian

ruby-on-rails - Rails 仪表板设计 : one controller action per div

ruby 修改project.pbxproj

ruby - 你如何在 Ruby webapps 中进行性能测试?

ruby-on-rails - 如何(大量)减少 Rails 应用程序中的 SQL 查询数量?

ruby - 合并多个哈希数组并进行计算

ruby - 错误 : disable image loading on watir with firefox