次のような配列が与えられた場合:
[1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
nil
配列の末尾から 'sを削除したいと思います。いくつかの醜いループを解決するのは難しくありませんが、それを行う Ruby の方法があることを望んでいました。
Result: [1, 2, nil, nil, 3, nil, 4, 5, 6]
次のような配列が与えられた場合:
[1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
nil
配列の末尾から 'sを削除したいと思います。いくつかの醜いループを解決するのは難しくありませんが、それを行う Ruby の方法があることを望んでいました。
Result: [1, 2, nil, nil, 3, nil, 4, 5, 6]
これはどう:
a.pop until a.last
間に nil が必要な理由はわかりませんが、余談です。
array = [1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
array.reverse.drop_while {|i| i == nil}.reverse
foo = [1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
foo.reverse.drop_while(&:nil?).reverse
# [1, 2, nil, nil, 3, nil, 4, 5, 6]
これがあなたのためのワンライナーです:)
a = [1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
a[0..a.rindex{|el| !el.nil?}] # => [1, 2, nil, nil, 3, nil, 4, 5, 6]
while(!(a = ar.pop)){}; ar.push a
まだ醜いループですが、おそらく醜いではありませんか?