有一个有用的
Ruby习惯用法使用tap,它允许你创建一个对象,对它做一些操作并返回它(我在这里只使用一个列表作为例子,我真正的代码更多参与):
def foo [].tap do |a| b = 1 + 2 # ... and some more processing,maybe some logging,etc. a << b end end >> foo => [1]
使用Rails有一个类似的方法叫做返回,所以你可以写:
def foo returning([]) do |a| b = 1 + 2 # ... and some more processing,etc. a << b end end
这说明了一切.无论你对对象做了多少处理,它仍然清楚它是函数的返回值.
在Python中我必须写:
def foo(): a = [] b = 1 + 2 # ... and some more processing,etc. a.append(b) return a
我想知道是否有办法将这个Ruby成语移植到Python中.我的第一个想法是使用with语句,但返回是无效的语法.