在 ruby 中记住之前的输入值
remember previous input value in ruby
下面有这个示例 class。
class MyClass
def initialize(options = {})
@input = options[:input]
end
def trigger
# I want to remember previous input value if this method called.
input
end
end
如何存储或记住之前输入的值?例如。
my_class = MyClass.new(input: "first")
my_class.trigger
=> first
如果我打电话:
my_class.input = "second"
我想记住之前输入的值"fisrt"
。我怎样才能做到这一点?
您应该做的是将@input 创建为数组并对其进行迭代以显示所有结果。
class MyClass
attr_accessor :input
def initialize(options = {})
@input = []
@input << options[:input]
end
def input=(item)
@input.unshift(item)
end
def trigger
# I want to remember previous input value if this method called.
@input.first
end
end
my_class = MyClass.new(input: 'first')
my_class.input = "second"
my_class.input.each {|i| puts i}
您需要另一个实例变量来保存调用方法触发器时分配给 input
变量的值。
class MyClass
attr_writer :input
def initialize(options = {})
@input = options[:input]
end
def trigger
@triggered_input = @input
end
def input
@triggered_input
end
end
my_class = MyClass.new(input: 'first')
my_class.input #=> nil
my_class.trigger #=> 'first'
my_class.input = 'second'
my_class.input #=> 'first'
my_class.trigger #=> 'second'
my_class.input #=> 'second'
下面有这个示例 class。
class MyClass
def initialize(options = {})
@input = options[:input]
end
def trigger
# I want to remember previous input value if this method called.
input
end
end
如何存储或记住之前输入的值?例如。
my_class = MyClass.new(input: "first")
my_class.trigger
=> first
如果我打电话:
my_class.input = "second"
我想记住之前输入的值"fisrt"
。我怎样才能做到这一点?
您应该做的是将@input 创建为数组并对其进行迭代以显示所有结果。
class MyClass
attr_accessor :input
def initialize(options = {})
@input = []
@input << options[:input]
end
def input=(item)
@input.unshift(item)
end
def trigger
# I want to remember previous input value if this method called.
@input.first
end
end
my_class = MyClass.new(input: 'first')
my_class.input = "second"
my_class.input.each {|i| puts i}
您需要另一个实例变量来保存调用方法触发器时分配给 input
变量的值。
class MyClass
attr_writer :input
def initialize(options = {})
@input = options[:input]
end
def trigger
@triggered_input = @input
end
def input
@triggered_input
end
end
my_class = MyClass.new(input: 'first')
my_class.input #=> nil
my_class.trigger #=> 'first'
my_class.input = 'second'
my_class.input #=> 'first'
my_class.trigger #=> 'second'
my_class.input #=> 'second'