有没有办法做这样的事情?
a = Struct.new(:c).new(1)
b = Struct.new(:c).new(2)
a.send(:c)
=> 1
b.send(:c)
=> 2
a.send(:c) = b.send(:c)
Run Code Online (Sandbox Code Playgroud)
最后一行导致错误:
syntax error, unexpected '=', expecting $end
a.send(:c) = b.send(:c)
^
Run Code Online (Sandbox Code Playgroud)
sep*_*p2k 25
a.send(:c=, b.send(:c))
Run Code Online (Sandbox Code Playgroud)
foo.bar = baz
不是bar
对赋值所遵循的方法的调用- 它是对方法的调用bar=
.所以你需要告诉send
调用该方法.
如果你事先知道变量名
a.send(:c=, b.send(:c))
Run Code Online (Sandbox Code Playgroud)
如果c
是动态变量,那么你可以这样做
c = 'my_key'
a.send("#{c}=", b.send(c))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4207 次 |
最近记录: |