2013-10-07 2 views
0

У меня есть этот файл.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 
+0

Этот метод также не работает. Защита удалить печати "Ввести параметр для удаления действия" delete_value = получает \t \t @ array.reject! {| Х | x == "# {delete_value}"} \t p @array end –

+0

Что не так с 'b = a.select {...}'? И почему вы делаете '' # {delete_value} "', когда достаточно 'delete_value' должно быть достаточно? Что выглядит '@ array' и как выглядит' delete_value'? –

+0

номер = SmartArray.new \t \t number.array = [-3,6,5,3,10,6,2,3,9, -3, -2, -5] и delete_value - attr_accessor. И я вызываю функцию delete через number.delete. –

ответ

0

У вас есть массив чисел:

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

Но ваш delete_value является строка:

delete_value = gets.chomp 

a == b ложна для каждого Fixnum a и струнных b (и аналогично a != b всегда верно е) так что вам нужно преобразовать b в ряд с чем-то вроде:

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

Рубин не автоматически конвертировать между строками и числами, как некоторые языки, вы должны сделать типы соответствия и выполнить тип конверсий вручную.

+0

Спасибо за резкий ответ, эти ошибки новичка всегда будут стоить вам некоторое время! –

0

Этот метод возвращает новый массив со всеми совпадениями. Ваш исходный массив действительно не изменится вообще.

Для дальнейшей ссылки: http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i-select

+0

Да, но если я поставлю предустановленное значение в действии удаления, он будет работать нормально. То же самое для отказа! метод. Любые советы о том, как заставить его работать? –

Смежные вопросы