gpt4 book ai didi

ruby - 在 ruby​​ 中替换 ===(大小写相等运算符)

转载 作者:行者123 更新时间:2023-12-01 21:26:11 25 4
gpt4 key购买 nike

我在执行自己的 ruby​​ 枚举时遇到了 rubocop 问题。我使用了 === 并且 rubocop 要求我更改它。但每次我尝试放置不同的东西时,我的方法都会按预期停止工作。

module Enumerable
def my_all?(arg = nil)
return true if !block_given? && include?(nil) == false && include?(false) == false && arg.nil?
return false unless block_given? || arg.nil? == false || empty?

if block_given?
my_each do |x|
return false unless yield(x)
end
elsif arg.class == Regexp
my_each do |x|
return false unless x.match(arg)
end
elsif arg.class == Numeric
my_each do |x|
return false unless x.is_a? arg
end
else
my_each do |x|
return false unless arg === x
end
end
true
end
end

最后一个 === 提供了更改的阻力。感谢那些能够理解这一点并提供帮助的人!

最佳答案

Enumerable#all? 的文档具体来说,当给出模式时:

[...] the method returns whether pattern === element for every collection member.

因此,为了复制您实际上拥有调用=== 的方法。仅仅为了取悦 Rubocop 而尝试替换它可能会导致不同的行为。

在你的情况下,我会 disable the cop使用内联评论:

my_each do |x|
return false unless arg === x # rubocop:disable Style/CaseEquality
end

关于ruby - 在 ruby​​ 中替换 ===(大小写相等运算符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63156404/

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