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

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

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

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

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

当前回答

你会用:

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

Unless是if的反义词,或者你可以用reject。

你可以拒绝非必需的元素:

@players.reject{|x| x==p.name}

在得到结果之后,你就可以开始实施了。

其他回答

你会用:

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

Unless是if的反义词,或者你可以用reject。

你可以拒绝非必需的元素:

@players.reject{|x| x==p.name}

在得到结果之后,你就可以开始实施了。

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

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

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

使用,除非:

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

给你:

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

您可以查看Ruby Style Guide以获得有关类似技术的更多信息。

下面这个怎么样:

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