我在我的代码中有以下逻辑:

if !@players.include?(p.name)
  ...
end

@players是一个数组。有什么方法可以让我避免!?

理想情况下,这个代码片段应该是:

if @players.does_not_include?(p.name)
  ...
end

当前回答

试试这个,它是纯Ruby,所以不需要添加任何外围框架

if @players.include?(p.name) == false do 
  ...
end

我在类似的逻辑中挣扎了几天,在查看了几个论坛和问答板后,结果发现解决方案实际上非常简单。

其他回答

下面这个怎么样:

unless @players.include?(p.name)
  ....
end

使用,除非:

unless @players.include?(p.name) do
  ...
end
module Enumerable
  def does_not_include?(item)
    !include?(item)
  end
end

好吧,但说真的,除非是可以的。

if @players.exclude?(p.name)
    ...
end

ActiveSupport添加排除?数组,散列和字符串。这不是纯Ruby,但是被很多Ruby爱好者使用。

来源:活动支持核心扩展(Rails指南)

如果你对!-操作符的反对主要是它需要放在你的检查符前面,这会破坏你的输入流程,那么就有。!方法。你只需要把它放在check之后来反转布尔值:

if @players.include?(p.name).!