use*_*302 0 ruby return ruby-on-rails dry
这可能是一个愚蠢的问题,但我的rails应用程序开始受到这种代码风格的困扰:
def return_my_object
@object = get_object
some_function_work(@object)
return @object
end
Run Code Online (Sandbox Code Playgroud)
是否有一般做法或方法来摆脱或避免return @object代码?到目前为止,我无法想到任何东西,它似乎是残酷的代码.
您可以使用Object#tap轻微简化该代码.Tap将对象生成块,并在块完成后返回对象.因此,它没有设置@object为的值some_function_work,而是设置的结果get_object.但是,如果some_function_work改变@object,这显然会反映出来,因为它是同一个实例.
那是:
def return_my_object
@object = get_object.tap { |o| some_function_work(o) }
end
Run Code Online (Sandbox Code Playgroud)
方法(@object)的最后一个表达式也将被返回.
下面是一个最小的示例,其中为块{}.tap生成一个新Hash实例,该块将在块完成时返回.在块内部,我们改变了Hash,它反映在分配给的结果中@object.
@object = {}.tap { |hash| hash[:key] = :value }
# { :key => :value }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |