2011-10-19 29 views
0

说我有一个数组,如:红宝石迭代 - 尝试在单次匹配两个数字

a = [1, 2, 3, 4, 5, 6] 

,我有两个变量是这样的:

b = 3 
c = 4 

我想要做的事像这样:

a.each do |i| 
    if(b = = i) and (c == i.next(I don't think I can do this)) 
    return true 
    end 
    end 

任何帮助,将不胜感激。

史蒂夫G.

回答

0

不要使用

a.each_slice 

要得到一系列配对的对象。

按照steenslag或glenn mcdonald的建议使用each_cons。

+1

不,'a.each_slice(2)'会给你[1,2] [3,4]和[5,6],其如果你正在寻找b = 2 c-3,那么它将不起作用。 –

+0

@glennmcdonald:你说得对。谢谢。 –

0

需要做在一个循环中,或可你只是跟踪如果每个变量是有问题的阵列的member??或者把它们放到一个散列/集合中并确保每个键都包含在内?或保持循环,并保持逻辑ORing是否或每个var是否为member?或将members?方法添加到数组,你开始了。

3

each_cons你想要做什么:

a = [1, 2, 3, 4, 5, 6] 
b=3 
c=4 
a.each_cons(2){|v1, v2| puts(b == v1 && c == v2)} 
# output: 
# false 
# false 
# true 
# false 
# false 
1
a.each_cons(2).include?([b,c])