gpt4 book ai didi

ruby-on-rails - 在 Ruby 中使用 Symbol#to_proc 简写的链接方法?

转载 作者:数据小太阳 更新时间:2023-10-29 06:49:53 27 4
gpt4 key购买 nike

我想知道是否有一种方法可以使用 (&:method) 链接一个方法

例如:

array.reject { |x| x.strip.empty? }

把它变成:

array.reject(&:strip.empty?)

我更喜欢速记符号,因为它的可读性。

最佳答案

不,没有缩写。你可以定义一个方法:

def really_empty?(x)
x.strip.empty?
end

并使用method :

array.reject(&method(:really_empty?))

或使用 lambda:

really_empty = ->(x) { x.strip.empty? }
array.reject(&really_empty)

但除非您在足够多的地方使用 really_empty? 以便拆分逻辑有意义,否则我不会更好地调用其中任何一个。

但是,由于您使用的是 Rails,您可以只使用 blank?而不是 .strip.empty?:

array.reject(&:blank?)

请注意 nil.blank? 是真的,而 nil.strip.empty? 只是给你一个异常(exception),所以它们并不完全等同;但是,您可能也想拒绝 nil,因此无论如何使用 blank? 可能会更好。 blank? 也为 false{}[] 返回 true,但您可能没有这些在你的字符串数组中。

关于ruby-on-rails - 在 Ruby 中使用 Symbol#to_proc 简写的链接方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com