Я пытался выяснить, могу ли я восстановить итератор delete_if класса Array как свой собственный метод, чтобы проверить, правильно ли я понял методы и блоки.Вот что я кодировал:
def delete_if(arr)
for x in 0...arr.length
if (yield arr[x])
arr[x]=arr[x+1,arr.length]
redo
end
end
end
arr = [0,1,2,3,4,5]
delete_if(arr) {|value| value % 2 == 0}
Это привело к ошибке, говорящей о том, что метод% не может быть идентифицирован в последней строке.Я знаю, что значение будет целым числом, поэтому я не уверен, почему он скажет эту ошибку.Может кто-нибудь объяснить, пожалуйста?Кроме того, в Ruby в целом, как вы можете быть уверены, что кто-то передает правильный тип в метод?Что если метод должен принимать строку, но она передается в виде целого числа - как вы это предотвратите ??
Спасибо!