现在我在*scratch*
缓冲区中编写表达式并通过评估来测试它们C-x C-e.我真的很感激有一个像SLIME或irb这样的交互式解释器,我可以在其中测试Emacs Lisp表达式.
有一个有用的Ruby习惯用法tap
允许你创建一个对象,对它做一些操作并返回它(我在这里只使用一个列表作为例子,我真正的代码更多参与):
def foo
[].tap do |a|
b = 1 + 2
# ... and some more processing, maybe some logging, etc.
a << b
end
end
>> foo
=> [1]
Run Code Online (Sandbox Code Playgroud)
使用Rails有一个类似的方法returning
,所以你可以写:
def foo
returning([]) do |a|
b = 1 + 2
# ... and some more processing, maybe some logging, etc.
a << b
end
end
Run Code Online (Sandbox Code Playgroud)
这说明了一切.无论你对对象做了多少处理,它仍然清楚它是函数的返回值.
在Python中我必须写:
def foo():
a = []
b = 1 + 2
# ... and some more processing, maybe some …
Run Code Online (Sandbox Code Playgroud)