2016-06-27 7 views
0

Anstelle von:Aufruf mehrere Methoden für ein Objekt mehrere Werte

v1 = obj.m1.m2.m3.m4 
v2 = obj.m1.m2.m3.m5 

ich in der Regel so schreiben zu vermeiden, die gleichen Methoden aufrufen:

tmp = obj.m1.m2.m3 
v1 = tmp.m4 
v2 = tmp.m5 

Aber ich denke, es ist hässlich ist ein setzen tmp var. Ich möchte kurz so schreiben:

v1, v2 = obj.m1.m2.m3.{:m4, :m5} 

Hat Ruby ähnliche Syntax?

Antwort

2

Die nächstgelegene Sie ist wahrscheinlich bekommen:

v1, v2 = obj.m1.m2.m3.instance_eval{[m4, m5]} 

aber es ist nicht effizient, noch ist es tut es wert.

2
v = obj.m1.m2.m3 
v1, v2 = [:m4, :m5].map { |m| v.send(m) }