gpt4 book ai didi

ruby - 在条件中使用逻辑或运算符

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:10 25 4
gpt4 key购买 nike

我的代码正在将字符串“text”与另外两个字符串“redact”和“redact2”进行比较,如果匹配则将其替换为“REDACTED”。

puts "Enter your sentense"
text = gets.downcase.chomp

puts "Enter your 2 words to be reducted"
redact = gets.downcase.chomp
redact2 = gets.downcase.chomp

words = text.split(" ")

words.each do |w|
if w == redact
print "REDACTED "
elsif
w == redact2
print "REDACTED "
else
print w + " "
end
end

我试图通过在 if 语句中使用逻辑 OR 来简化我的代码,但是代码为所有单词打印了 "RETUCTED"。谁能解释一下为什么?

words.each do |w|
if w == redact || redact2
print "REDACTED "
else
print w + " "
end
end

最佳答案

Can someone please explain me why?

因为 ==|| 绑定(bind)更强。

因此,您的陈述实际上解释如下:

if (w == redact) || redact2

不像你期望的那样:

if w == (redact || redact2)

要解决它,您有几种选择:

  • if w == redact || w == redact2
  • if [reduct, reduct2].include?(w)

如果您希望多节省几行代码,您可以将代码简化为:

words.each do |w|
print [redact,redact2].include?(w) ? "REDACTED " : w + " "
end

关于ruby - 在条件中使用逻辑或运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40071360/

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