結局何が言いたいのかよく分からん

rubyなら、
def foo
 initialize()
 result = ...
finalize()
result
end
def foo
 initialize()
 result = ...
finalize()
end
で、値が違ってくるでしょ?
これは、luaのreturnありなしと同じことじゃない?
それともこんな書き方は「できない」ようにした方がいい?