1

内部に if elsif ステートメントを含む for ループがあります。最初の if で、条件が満たされた場合はそこで停止し、ループの次の繰り返しに進みます。

これは、私がやろうとしていることの非常に単純化されたバージョンです:

array = [1,2,3,4,"x"]
for i in 0..(array.count -1)
    if array[i] == "x"
        #start next for loop iteration without executing the elsif
    elsif array[i] < 3
        puts "YAY!"
    end
end

私がまさにやろうとしているのは、要素の1つを除くすべてが整数であるが、そのうちの1つが文字列である配列を反復処理することです。文字列要素では、残りのコードをスキップしてループの次の反復に進むためのループ (種類は何でもよい) が必要です。2 番目の if ステートメントは「array_element < 11 条件」を使用するため、これは重要です。そのため、文字列要素でそれを実行すると、「文字列と 11 の比較が失敗しました」というメッセージが表示されます。

だから私は arr[x][3] が欲しいと思います これは私が試したものですが、単一の 8 ではなく 8 8 8 8 が得られます。

arr = [[1,2,3,"4"], [5,6,7,8], [9,10,11,12]] 

    arr.each{|x| 
    x.each {|i| 
        next if x[3].instance_of? String 
        if x[3] < 12 puts x[3] 
        end 
} 
}

わかりましたこれは動作します!! ありがとうiAmRubuuu!!

arr = [1,2,3,"4"], [5,6,7,8], [9,10,11,12], [13,14,15,"16"], [17,18,19,20]]

arr.each_with_index{|x, i| 

    next if x.last.instance_of? String

    if x.last < 21
    puts x.last
    end
}

出力を教えてください

8
12
20
4

2 に答える 2

5

使わないfor inで、使ってくださいeach

(0..10).each do |i|
  next if i == 5

  if i == 10
    puts "YAY!"
  end
end
于 2013-03-28T07:07:42.307 に答える
2

あなたの編集に従って、あなたが探している以下のものを願っています:

arr = [1, 2, 3, "11", 11]
arr.each do |x|
  next if x.instance_of? String
  puts "#{x} is #{x.class}"
end

出力:

1 is Fixnum
2 is Fixnum
3 is Fixnum
11 is Fixnum

編集

コード:

arr = [[1,2,3,"4"], [4,5,6,7], [8,9,10,11]] 

arr.each{|x|
x.each{ |i|
next if i.instance_of? String
puts "#{i} is #{i.class}"
}
}

出力:

1 is Fixnum
2 is Fixnum
3 is Fixnum
4 is Fixnum
5 is Fixnum
6 is Fixnum
7 is Fixnum
8 is Fixnum
9 is Fixnum
10 is Fixnum
11 is Fixnum

V_1(回答投稿の最初のコメントから)

arr = [[1,2,3,"4"], [4,5,6,7], [8,9,10,11]] 
puts arr[1].last,arr.last.last

出力:

7
11

V_2(回答投稿の最初のコメントから)

arr = [[1,2,3,"4"], [4,5,6,7], [8,9,10,11]] 
arr.each_with_index{ |x,i|
next if i == 0
#p x,i
p "last element of inner array:#{x.last}"
}

出力:

"last element of inner array:7"
"last element of inner array:11"
于 2013-03-28T07:30:53.263 に答える