Jos*_*sch -2 ruby arrays string-formatting
我正在比较大型数组以找到缺少的元素.但是一个阵列将全部大写,而另一个阵列不大写.所以我想格式化一个数组,但我遇到了问题.这是我尝试格式化的数组的示例.
array = [ 023, "Bac001", "abc123"]
Run Code Online (Sandbox Code Playgroud)
然后我尝试将所有东西都资本化
array.map!(&:upcase)
Run Code Online (Sandbox Code Playgroud)
但是为023获取未定义的方法'upcase'
有没有解决的办法?
我用的是Object#respond_to?
:
def upcase_elements(ary)
ary.map { |e| e.respond_to?(:upcase) ? e.upcase : e }
end
upcase_elements([23, "BAC001", "ABC123"])
#=> [23, "BAC001", "ABC123"]
Run Code Online (Sandbox Code Playgroud)
检查接收器是否响应方法比检查其类型更灵活:
upcase_elements([:foo, "bar"])
#=> [:FOO, "BAR"]
Run Code Online (Sandbox Code Playgroud)