Метод include в Ruby, примененный к массиву - PullRequest
1 голос
/ 04 апреля 2020

У меня проблемы с включением? метод в ruby. Как я понимаю, этот метод должен возвращать true, если массив включает указанный элемент. Вот так:

a = [ "a", "b", "c" ]
a.include?("b")   #=> true
a.include?("z")   #=> false`

Но когда я делаю это:

soap_opera = ["all", "my", "children"]
p soap_opera.include?("a")

Возвращает ложь. Почему?

Ответы [ 4 ]

4 голосов
/ 04 апреля 2020

Как уже объяснено, это потому, что ваш массив строк не содержит строку 'a'.

Чтобы результат был true, массив должен содержать также строку 'a', например, :

ary = ['not', 'a', 'dog']
ary.include? 'a' #=> true


Если вы хотите проверить , если любая из строк массива содержит подстроку 'a', тогда вы можете использовать Enumerable # any? :
ary = ["all", "my", "children"]
ary.any? { |str| str.include? 'a' } #=> true


Если вы хотите проверить , если все строк содержат подстроку 'a', вы можете использовать Перечислим # все? :
ary = ["all", "my", "children"]
ary.all? { |str| str.include? 'a' } #=> false
4 голосов
/ 04 апреля 2020

У меня проблемы с включением? метод в ruby. Как я понимаю, этот метод должен возвращать true, если массив содержит указанный элемент.

Это правильно.

Но когда я делаю это:

soap_opera = ["all", "my", "children"]
p soap_opera.include?("a")

Возвращает ложь. Почему?

Потому что, как вы сказали выше:

, этот метод должен возвращать true, если массив содержит указанный элемент

И soap_opera од не содержат элемент "a". soap_opera содержит три элемента: "all", "my" и "children". "a" среди них нет.

1 голос
/ 04 апреля 2020

Кажется, вы путаете Array#include? и String#include?

Вместо проверки всего массива, вы можете проверить каждый элемент по отдельности:

oap_opera = ["all", "my", "children"]

oap_opera.each do |element|
  if element.include?("a")
    puts "'#{element}' includes 'a'"
  else
    puts "'#{element}' does not include 'a'"
  end
end

Отпечатки

'all' includes 'a'
'my' does not include 'a'
'children' does not include 'a'
1 голос
/ 04 апреля 2020

Вы ищете символ «а»? Если вы, вы можете попробовать это:

joined_soap_opera = soap_opera.join #  => "allmychildren" 

joined_soap_opera.include?("a") #  => true 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...