我不确定我在哪里出错了。我有一个数组,系统会提示用户有关应从阵列中删除的数字的问题。存储该数字,结果是一个新的数组,用删除的值输出。
def delete(number)
a = [1, 2, 1, 3, 1, 4, 2, 5]
puts "Please type number to be deleted?"
number = gets
result= a.delete(number)
puts result
end
a.delete(number)
答案 0 :(得分:0)
也许做这样的事情?
def delete(num,array)
array.reject { |el| el == num }
puts array
end
a = [1, 2, 1, 3, 1, 4, 2, 5]
puts "Please type number to be deleted? from array #{a}"
number = gets
delete(number.to_i,a)
答案 1 :(得分:0)
通常,Kernel#gets返回带有尾部换行符的String。因此,Array#delete没有匹配的元素。
您需要将输入转换为#gets方法的Integer。从方法返回值也很有用。以下工作,也用于验证用户的输入:
require 'pp'
def delete_from_array array
print 'Number to be deleted: '
array.delete Integer(gets)
pp array
end
array = [1, 2, 1, 3, 1, 4, 2, 5]
delete_from_array array.dup
请注意,#delete会修改原始数组,而不是返回副本。在大多数情况下,您可能希望使用#dup来确保不修改原始阵列。另一方面,如果您想要副作用,那么在将数组作为参数传递时,只需忽略对#dup的调用。