【发布时间】:2019-11-14 22:15:05
【问题描述】:
我想干掉这段代码。最好的解决方案是像在 rails 中使用 before_action 方法一样吗?
class Direction
attr_accessor :dir
def initialize(dir)
@dir = dir
end
DIRECTIONS = %w[N E S W]
def turn_left
d = DIRECTIONS.find_index(dir)
@dir = DIRECTIONS.rotate!(d-1).first
end
def turn_right
d = DIRECTIONS.find_index(dir)
@dir = DIRECTIONS.rotate!(d+1).first
end
end
【问题讨论】:
-
一些控制器代码会很有用。
-
将此处的状态与方向概念分开可能更有意义。这种混淆了两件事,即基本方向的定义和方向状态的存储。
-
您可以使用
dir而不是@dir来简化您的方法,因为您有attr_accessor :dir。 -
“是否可以像在 rails 中一样在 ruby 中进行操作”?您确实意识到 Rails IS Ruby 代码,对吗?所以,当然有可能。
-
调用
rotate!会修改DIRECTIONS常量所指的数组。不要那样做——常量不应该是偶然的。
标签: ruby-on-rails ruby dry