【发布时间】:2015-09-21 07:38:22
【问题描述】:
我有一个类,我正在尝试根据创建输入来确定输出。
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包含我的情况。
我尝试创建另一种方法来从任何具有它的命令中分出--global,但结果略有不同:
bar.command = 'world'
bar.command #=> "world"
bar.global? #=> false
但这会改变bar 的当前状态。
我怎样才能让这个类和方法表现得如此才能使global? 标志即使在命令更改后仍然存在?
更好的是,我是否可以仅在 global? 方法中实现所有更改 - 从而最大限度地减少我对整个类更改的影响?
【问题讨论】:
-
您希望
@command成为--global world但在您调用barr.command时返回world还是您真的希望@command成为world当输入为--global world时? -
@Joseph 我想我希望
bar.command返回world,但让bar.global?返回true。
标签: ruby class instance instance-variables