12 ms·
foo = returning(Object.new) do |f| def f.bar ... end def f.bash ... end end # vs foo = Object.new def foo.bar ... en
by zenspider 18y ago
foo = returning(Object.new) do |f|
def f.bar
...
end
def f.bash
...
end
end
# vs
foo = Object.new
def foo.bar
...
end
def foo.bash
...
end
1 line shorter, less indentation, more clear. What does returning get you besides another message send and block activation? I have yet to see a good use for it. (yes, I'm biased. calibrate accordingly)
- raganwald 18y agoIt really depends. If the definitions of foo.bar and foo.bash make sense independantly of the assignment to foo, I prefer the second form as well. If in my brain the whole thing is "atomic", I prefer the returning form or to make a helper method so that they are composed into a logical chunk. For the same reason, I write: foo = bar bash = blitz When teh two statements are independant, and: foo, bar = bash, blitz When they are deeply related and should not be broken up. Sometimes that is hard to read and I will get gratuitous: begin foo = bar bash = blitz end What can I say... that uses more characters than needed. It isn't always about saving electrons for me.