【问题标题】:Check that array only contains string objects检查数组是否只包含字符串对象
【发布时间】:2019-11-10 13:12:57
【问题描述】:

有没有比下面更简洁的方法来检查数组是否只包含 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

【问题讨论】:

  • 如果这是Code Golf,我建议arr==arr.grep(String)

标签: ruby-on-rails ruby ruby-on-rails-5


【解决方案1】:

all?怎么样

def contains_only_string_class(collection)
  collection.all? { |obj| obj.is_a?(String) }
end

【讨论】:

  • 如果您使用较新的 Ruby 版本之一,您还可以提供一个模式:collection.all?(String)
猜你喜欢
  • 2020-07-27
  • 2023-03-09
  • 2013-03-08
  • 2017-07-04
  • 2014-07-27
  • 1970-01-01
  • 2011-07-11
  • 2019-10-01
  • 1970-01-01
相关资源
最近更新 更多