如何检查数组中的一个元素是否满足模式,而其余元素是否满足?

-1 ruby arrays ruby-on-rails conditional-statements

我正在使用Ruby 2.4.我知道如何检查字符串是否全部大写

str == str.upcase
Run Code Online (Sandbox Code Playgroud)

但是如果我有一个字符串数组,那么检查只有数组的最后一个元素是大写的快速方法是什么,而对于其他元素,str!= str.upcase.我假设数组中至少有一个元素,如果只有一个元素并且它是大写的,我希望我的条件评估为true.

Car*_*and 6

def only_last_upcase?(arr)
  arr.find_index { |w| w == w.upcase } == arr.size - 1
end

only_last_upcase? ["word", "wOrD", "WORD"] #=> true
only_last_upcase? ["WORD", "wOrD", "WORD"] #=> false
only_last_upcase? ["word", "wOrD", "word"] #=> false
only_last_upcase? ["word"]                 #=> false
only_last_upcase? ["Word"]                 #=> false
only_last_upcase? ["WORD"]                 #=> true
only_last_upcase? []                       #=> false
Run Code Online (Sandbox Code Playgroud)