Я пытаюсь использовать блоки в Ruby, у меня есть этот код:Как использовать и блок в Руби
def positions
return horizontally_position if orientation == "horizontally"
vertically_position
end
def horizontally_position
res = []
for x in position[0]..end_coord(0)
res << [x, position[1]]
end
return res
end
def vertically_position
res = []
for y in position[1]..end_coord(1)
res << [position[0], y]
end
return res
end
Там, кажется, повторяется код, и вы хотите использовать блок или выходу повышения производительности , но не знаю, как!
ли это:
def positions
return h_v_position(0, {[x, position[1]]}) if orientation == "horizontally"
h_v_position(1, {[position[0], y]})
end
def h_v_positions(coord, &block)
res = []
for x in position[coord]..end_coord(coord)
res << block.call
end
return res
end
Но это не работа .. есть любая помощь?
Если я интерпретирую это право, я думаю, вместо того, чтобы передавать блок, вы просто хотите передать массив '[x, position [1]]' или '[position [0], y]'.Кроме того, при использовании блока в Ruby вы передаете аргумент, как вы, но внутри метода вы вызываете блок с помощью 'block.call'. Но блоки - это блоки. Это те '{материал здесь}', который вы использовали бы для передачи конкретных аргументов методам для использования. Но, в вашем случае, похоже, что вы передаете информацию в массиве для хранения в другом массиве с именем 'res' и возвращаете это. –
Спасибо за это, я нашел решение своей проблемы, я отправлю его через несколько минут. –