我有以下数组
A = [1,2,3,4,5]
我现在正试图从数组中删除一个元素,比如说[4]。我知道要这样做你可以使用ruby方法,比如pop,但是,对于这个任务,我试图手动完成。
我曾尝试使用以下内容:
a [4] =零
但是,这只会导致此索引处的值被nil替换,而不是完全删除指向此值的指针(即:a.length仍然认为数组中的值为nil。)
正如我所看到的,关于我的问题有很多问题,我要强调的是,我要做的就是完成弹出自己的方法。到目前为止,我所能想到的是将数组的所有内容复制到一个新数组(长度减少1)并返回它。我不确定这是否是内部流行的方式,或者是否有更好的方法来做到这一点。
答案 0 :(得分:1)
如果不使用Ruby方法,就无法在Ruby中完成它。
编辑(更多细节):
Ruby是一个用C语言编写的scripting language。公平地说,我和其他许多人,我确定,理解你的意思,但严格来说,这是一个相当矛盾的问题;我确信这是预制的'您使用#pop
和#compact
之类的方法,但如果不使用任何 Ruby方法,您将如何实现目标?!
答案 1 :(得分:0)
也许...
class Array
def custom_remove(position)
array = []
each_with_index do |elm, index|
next if position == index
array << elm
end
array
end
end
1.9.3-p545 :035 > class Array
1.9.3-p545 :036?> def custom_remove(position)
1.9.3-p545 :037?> array = []
1.9.3-p545 :038?> each_with_index do |elm, index|
1.9.3-p545 :039 > next if position == index
1.9.3-p545 :040?> array << elm
1.9.3-p545 :041?> end
1.9.3-p545 :042?> array
1.9.3-p545 :043?> end
1.9.3-p545 :044?> end
=> nil
1.9.3-p545 :045 > a = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
1.9.3-p545 :046 > a.custom_remove(4)
=> [1, 2, 3, 4]
答案 2 :(得分:-1)
您仍然可以使用
a[4]=nil
但也有:
b = a.compact
它将返回一个没有nil的新数组。