0

この file.rb があり、ターミナルから実行すると、特定の入力値を削除したいと考えています。ただし、配列は同じままです。何か助けてください。

   def delete
    print "Introduce the parameter for the delete action"
    delete_value = gets.chomp
    p @array.select { |e| e!= "#{delete_value}"}

    #@second_array = @array.reject! {|x| x == "#{delete_value}" }   
    #puts @second_array
   end
4

2 に答える 2

0

あなたは数字の配列を持っています:

@array = [-3,6,5,3,10,6,2,3,9,-3,-2,-5]

しかし、あなたdelete_valueは文字列です:

delete_value = gets.chomp

a == bすべての Fixnumaと Stringに対して false ですb(同様に常に true です)。したがって、次のような数値a != bに変換する必要があります。b

delete_value = gets.to_i
@array.reject! { |x| x == delete_value }

Ruby は、一部の言語のように文字列と数値を自動的に変換しません。型を一致させ、手動で型変換を実行する必要があります。

于 2013-10-07T22:50:12.967 に答える
0

このメソッドは、すべての一致を含む新しい配列を返します。元の配列はまったく変更されません。

詳細な参照: http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i-select

于 2013-10-07T22:06:34.637 に答える