Вот способы сделать обе техники. Предполагая, что у нас уже есть определение вашего класса,
position = Position.new(1, 2)
axis = :x
position.send axis #=> 1
axis = :y
position.send axis #=> 2
Метод Object#send
принимает как минимум символ, представляющий имя вызываемого метода, и вызывает его. Вы также можете передавать аргументы методу после имени и блока.
Второй способ сделать это (используя метод Position#get
) -
class Position
def get(axis)
send axis
end
end
position = Position.new(1, 2)
axis = :x
position.get axis #=> 1
axis = :y
position.get axis #=> 2
Я рекомендую этот способ, потому что он включает в себя метод получения значений. Если вам нужно изменить его позже, вам не нужно менять весь код, который использует Position
.