ruby - 如何编写函数来更改 Ruby 主作用域中变量的值

标签 ruby scope

我有一个任务要用c写一个值交换函数,我也不知道怎么用ruby写

在 Ruby 中类似

a = 1

b = 2

value_swap!(a,b)

puts a #=> 2

puts b #=> 1

这里的难点在于如何使用一个函数来改变主作用域中的值。

最佳答案

这是一个重大的 hack,但你可以尝试这样的事情:

def value_swap(a,b,parent_binding)
    parent_binding.eval("#{a},#{b}=#{b},#{a}")
end

a=1
b=2
value_swap :a,:b,binding
puts a
puts b 

关于ruby - 如何编写函数来更改 Ruby 主作用域中变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11499705/

相关文章:

javascript - 在 if block 中定义 JavaScript 变量有什么问题?

导入模块的 Python 作用域和命名空间

python - 使用 exec 生成函数以将小部件放置在 pyqt 中无法识别自身

scope - AngularJS 中 Controller 之间通信的正确方法是什么?

ruby - 除了数组值之外,如何使用散列?或者如何创建哈希线?

javascript - Var 和 JavaScript 变量作用域

java - https4 端点是什么意思?这和https有区别吗?

ruby-on-rails - 类名中的双冒号和 RubyMine 对短名称的提示

ruby-on-rails - 帮助理解 'require' ,想从lib导入代码

ruby - 如何在 Ruby 中执行相当于 's3cmd ls s3://some_bucket/foo/bar' 的操作?