我发现自己要做很多事情来定义ruby方法的返回值:
def foo
val = (some expression)
val
end
Run Code Online (Sandbox Code Playgroud)
这似乎有点做作.这里的最佳做法是什么?
Dan*_*nne 11
除非(某些表达式)很重并且将被多次调用,否则不必将其保存到变量中.在这种情况下,您可能希望缓存它.
我会选择:
def foo
(some expression)
end
Run Code Online (Sandbox Code Playgroud)
或用于缓存:
def foo
@val ||= (some expression)
end
Run Code Online (Sandbox Code Playgroud)
注意,Ruby 1.9的,你可以使用Object#tap保存的值在年底返回,如果你需要返回之前做别的事情与价值:
def foo
(some expression).tap do |val|
# use val here
end
# The return value of the tap is _val_
# and hence the return value of your method
end
Run Code Online (Sandbox Code Playgroud)