index create array ruby-on-rails ruby

ruby on rails - create - ¿Hay un opuesto de incluir? para Ruby Arrays?



ruby create array (9)

Tengo la siguiente lógica en mi código:

if [email protected]?(p.name) do ... end

@players es una matriz. ¿Hay algún método para poder evitarlo ! ?

Idealmente, este fragmento sería:

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


Mirando a Ruby solamente

El método Enumerable#none? se puede usar de la manera requerida cuando se usa con una comparación simple == en el bloque.

player = [1, 2, 3] player.none? { |n| n == 7 } #=> true !player.include?(7) #=> true

¿Usar un argumento con none como none?(7) puede ser suficiente en muchos casos, pero tenga en cuenta que esto se usa === para comparar en lugar de include? que usa == .

p.ej

player.none?(7) #=> true player.none?(String) #=> true


¿Qué tal lo siguiente?

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


Aqui tienes:

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

Puede echar un vistazo a la Guía de Ruby Style para obtener más información sobre técnicas similares.


Prueba esto, es Ruby puro así que no hay necesidad de agregar ningún marco periférico

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

Estuve luchando con una lógica similar durante unos días, y después de revisar varios foros y paneles de preguntas y respuestas con poco resultado, resultó que la solución era bastante simple.


Pruebe algo como esto:

@players.include?(p.name) ? false : true


Usar a unless esté bien para las declaraciones con single include? cláusulas pero, por ejemplo, cuando necesita verificar la inclusión de algo en una Array pero no en otra, el uso de include? con exclude? es mucho más amigable.

if @players.include? && @spectators.exclude? do .... end

Pero como dizzy42 dice más arriba, ¿el uso de exclude? requiere ActiveSupport


Usar a menos que

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


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

ActiveSupport agrega la exclude? método para Array y String . Esto no es puro Ruby, pero es usado por MUCHOS rubyistas.


module Enumerable def does_not_include?(item) !include?(item) end end

Ok, pero en serio, a menos que funcione bien.