我有我试图确定的基础上创造的输入输出类。覆盖的实例属性有条件
class MyCommand
attr_accessor :command
def initialize(command = nil)
@command = command
end
# @return Boolean
def global?
@command.start_with?('--global')
end
end
这只是正常,像这样:
foo = MyCommand.new('hello')
foo.command #=> "hello"
foo.global? #=> false
然而,当我通过我的条件,我得到一些不错的,一些不那么良好的效果:
bar = MyCommand.new('--global world')
bar.global? #=> true
bar.command #=> "--global world"
即,command
包括我的情况。
我试图创建另一个方法SUB OUT从具有任何命令--global
,但后来我得到略有不同的结果:
bar.command = 'world'
bar.command #=> "world"
bar.global? #=> false
但是,这会产生变异的bar
当前状态。
我怎么可能去让这个类和方法的行为,这样的命令改变之后也global?
标志保持?
更妙的是,我能实现所有的只有global?
方法中的变化 - 从而最大限度地减少我对整个班级变化的影响?
你想'@ command'是'--global world'但是当你调用'barr.command'或做你真正想要'@ command'是'world'当输入为''返回world' - 全球化世界? – Joseph
@Joseph我想,我想'bar.command'返回'world',但对于'bar.global?'返回TRUE;。 –