而不是:
v1 = obj.m1.m2.m3.m4
v2 = obj.m1.m2.m3.m5
我通常这样写,以避免调用相同的方法:
tmp = obj.m1.m2.m3
v1 = tmp.m4
v2 = tmp.m5
但我觉得设置一个tmp变量很难看。我想这样写一下:
v1, v2 = obj.m1.m2.m3.{:m4, :m5}
ruby是否有类似的语法?
答案 0 :(得分:2)
你最接近的可能是:
v1, v2 = obj.m1.m2.m3.instance_eval{[m4, m5]}
但效率不高,也不值得这样做。
答案 1 :(得分:2)
v = obj.m1.m2.m3
v1, v2 = [:m4, :m5].map { |m| v.send(m) }