例如,如果我有一个数组,比如说:
arr = ["HI","BYE","BYE","BYE"]
有没有一种方法可以让我知道数组中是否连续出现了“BYE”?
arr = ["HI","BYE","BYE","BYE"]
有没有一种方法可以让我知道数组中是否连续出现了“BYE”?
arr = ["HI", "BYE", "BYE", "BYE"]
arr.each_cons(2).any? { |s,t| s == "BYE" && t == "BYE" }
#=> true
arr.each_cons(2).any? { |s,t| s == "HI" && t == "HI" }
#=> false
要确定任何连续的元素是否相同:
arr.each_cons(2).any? { |s,t| s == t }
#=> true
enum = arr.each_cons(2)
#=> #<Enumerator: ["HI", "BYE", "BYE", "BYE"]:each_cons(2)>
可以通过将此枚举器转换为数组来获取其元素:
enum.to_a
#=> [["HI", "BYE"], ["BYE", "BYE"], ["BYE", "BYE"]]
enum
的三个元素依次传递给块,并分配给块变量:
s, t = enum.next
#=> ["HI", "BYE"]
s #=> "HI"
t #=> "BYE"
s, t = enum.next
#=> ["BYE", "BYE"]
s, t = enum.next
#=> ["BYE", "BYE"]
arr.slice_when { |a,b| a != b }.any? { |a| a.size > 1 }
#=> true
arr.chunk(&:itself).any? { |_,a| a.size > 1 }
#=> true
arr.any? && (1..arr.size-1).any? { |i| arr[i] == arr[i-1] }
#=> true
arr.any?
是为了防止 arr
为空。