Убедитесь, что массив содержит только строковые объекты - PullRequest
0 голосов
/ 10 ноября 2019

Есть ли более краткий способ, чем приведенный ниже, чтобы проверить, содержит ли массив только объекты класса String?

a = ['one','twon','three']  # => ["one", "twon", "three"]

b = ['one','twon', 1 ]  # => ["one", "twon", 1]

c = ['one','twon', {one: 1} ]  # => ["one", "twon", {:one=>1}]

def contains_only_string_class(object)
  uniq_a= object.map{ |i| i.class }.uniq          # => [String], [String, Integer], [String, Hash]
  uniq_a.include?(String) & (uniq_a.length == 1)  # => true,     false,             false
end                                               # => :contains_only_string_class

contains_only_string_class(a)  # => true
contains_only_string_class(b)  # => false
contains_only_string_class(c)  # => false

1 Ответ

5 голосов
/ 10 ноября 2019

Как насчет использования all?

def contains_only_string_class(collection)
  collection.all? { |obj| obj.is_a?(String) }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...