mag*_*e f 9 ruby ruby-on-rails ruby-on-rails-3.1
我想知道是否有一种方法可以使用(&:方法)链接方法
例如:
array.reject { |x| x.strip.empty? }
Run Code Online (Sandbox Code Playgroud)
把它变成:
array.reject(&:strip.empty?)
Run Code Online (Sandbox Code Playgroud)
由于其可读性,我更喜欢简写符号.
不,没有简写.您可以定义一个方法:
def really_empty?(x)
x.strip.empty?
end
Run Code Online (Sandbox Code Playgroud)
并使用method:
array.reject(&method(:really_empty?))
Run Code Online (Sandbox Code Playgroud)
或者使用lambda:
really_empty = ->(x) { x.strip.empty? }
array.reject(&really_empty)
Run Code Online (Sandbox Code Playgroud)
但除非你really_empty?在足够的地方使用分裂逻辑是有道理的,否则我不会把它们中的任何一个称为更好.
但是,由于您使用的是Rails,因此您可以使用blank?而不是.strip.empty?:
array.reject(&:blank?)
Run Code Online (Sandbox Code Playgroud)
请注意,这nil.blank?是正确的,而nil.strip.empty?只是提出异常,因此它们并不完全等同; 但是,你可能也想拒绝nils,所以blank?无论如何使用可能会更好.blank?也返回真false,{}以及[]但是你可能没有你的那些字符串数组英寸
| 归档时间: |
|
| 查看次数: |
1355 次 |
| 最近记录: |