编写更好的Ruby:如何将对象转换为false或true?

编写更好的Ruby:如何将对象转换为false或true?,ruby,code-formatting,Ruby,Code Formatting,在ruby中,返回值的最佳/最优雅的方式是什么,例如: #method returns true or false if 'do i match' is present in string def method(str) str =~ /do i match/ end 有些人会这样做: def foo !!(str=~/do i match/) end # or def foo match = str=~/do i match/ !!match end 第二个!运行真实性

在ruby中,返回值的最佳/最优雅的方式是什么,例如:

#method returns true or false if 'do i match' is present in string
def method(str)
  str =~ /do i match/
end
有些人会这样做:

def foo
  !!(str=~/do i match/)
end

# or

def foo
  match = str=~/do i match/
  !!match
end
第二个!运行真实性测试并否定答案,然后是第一个!再次求反以获得初始真实结果

我更喜欢更明确的语法:

def foo
  str =~ /do i match/ ? true : false
end
这确实是事实,但对我来说更清楚。做你觉得最干净的事。

有些人会做:

def foo
  !!(str=~/do i match/)
end

# or

def foo
  match = str=~/do i match/
  !!match
end
第二个!运行真实性测试并否定答案,然后是第一个!再次求反以获得初始真实结果

我更喜欢更明确的语法:

def foo
  str =~ /do i match/ ? true : false
end

这确实是事实,但对我来说更清楚。做你觉得最干净的事。

我说这话可能是个异端,但我认为它们是美丽的。在这种情况下,它评估为真或假,但我可以看出人们可能认为这是不清楚的

您可以保留隐式返回,并改为:

str =~ /do i match/ ? true : false

我可能是个异端分子,但我认为他们的回归是美好的。在这种情况下,它评估为真或假,但我可以看出人们可能认为这是不清楚的

您可以保留隐式返回,并改为:

str =~ /do i match/ ? true : false

可读性和性能之间的折衷

!str.match(/do i match/).nil?

可读性和性能之间的折衷

!str.match(/do i match/).nil?

你能换一个新的吗!使用not?在这个非常特殊的实例中使用not是可以的,但是它们之间的优先级是不同的!而不是。试一试推杆!正确的和不正确的。你能替换这个吗!使用not?在这个非常特殊的实例中使用not是可以的,但是它们之间的优先级是不同的!而不是。试一试推杆!正确的和不正确的。代码有什么问题吗?匹配时返回真实值,否则返回虚假值。当需要布尔值时,无论如何都不应该使用==true或==false。它返回0或nil。我认为它应该返回真或假,相当标准的约定在。。。处处另外,我没有使用==true,比如[statement]if方法?是似乎比必须记住我编写的API是否返回任意值要好得多,然后找到它们是什么,然后编写诸如method?zero之类的逻辑。但我的观点是,在ruby中,除了nil和false之外的所有内容都是真实的,甚至0!即使是空字符串!所以,按照你的方法,让我工作!如果方法'do i match'将打印i work!。没有必要。零?哦。好的,我会考虑的,谢谢,我是鲁比的Nube,代码是怎么回事?匹配时返回真实值,否则返回虚假值。当需要布尔值时,无论如何都不应该使用==true或==false。它返回0或nil。我认为它应该返回真或假,相当标准的约定在。。。处处另外,我没有使用==true,比如[statement]if方法?是似乎比必须记住我编写的API是否返回任意值要好得多,然后找到它们是什么,然后编写诸如method?zero之类的逻辑。但我的观点是,在ruby中,除了nil和false之外的所有内容都是真实的,甚至0!即使是空字符串!所以,按照你的方法,让我工作!如果方法'do i match'将打印i work!。没有必要。零?哦。好的,我会考虑的,谢谢,我是鲁比的努比。