如何将实例变量作为参数传递给函数? 例如:
@tmp = "blabla"
...
my_function(@tmp)
@tmp应该是“你好”
def my_function(foo)
foo = "hello"
end
注意:我改变了标题的措辞!
答案 0 :(得分:1)
@temp
不应该像你那样“打招呼”。如果你要更新@tmp
,我会改变my_function
的工作方式:
def my_function
'hello'
end
@tmp = "blabla"
...
@tmp = my_function
Ruby是一种“按值传递”的语言。这可能有助于解释它比我更好:https://www.ruby-forum.com/topic/41160
基本上你的my_function
只是在函数中分配foo
“hello”,然后返回foo,但不会重新分配传入的对象。
答案 1 :(得分:0)
您的问题有点不明确,但看起来您想要进行一些动态属性分配。
class Test
attr_accessor :foo
def initialize
@foo = "asdf"
end
def my_function(var, set_to = "hello")
self.instance_variable_set(var, set_to)
end
end
用法:
t = Test.new # t.foo is "asdf"
t.my_function(:@foo) # t.foo is "hello"
t.my_function(:@foo, "bananas") # t.foo is "bananas"
值得注意的是,您必须传递my_function
符号,表示您想要动态更改的变量,而不是变量本身。