以下是The Rspec Book中的内容。我想知道为什么messages << message
indef puts
不是@messages << message
。我了解这||= []
是记忆,也了解这@messages
是一个实例变量。那么,是否应该在同一类中使用它?还是错字?
class Output
def messages
@messages ||= []
end
def puts(message)
messages << message
end
end
def output
@output ||= Output.new
end
Given /^I am not yet playing$/ do
end
When /^I start a new game$/ do
game = Codebreaker::Game.new(output)
game.start
end
Then /^I should see "([^"]*)"$/ do |message|
output.messages.should include(message)
end
我认为您的困惑在于@messages
变量和messages
方法之间
class Output
def messages
@messages ||= []
end
def puts(message)
messages << message #=> here `messages` refer to the method above
end
end
这是一个简单的例子
class Output
def m
@messages ||= []
end
def puts(message)
m << message #=> method `m`
end
end
v = Output.new
v.puts "blah"
v.m #=> ["blah"]
示例2(更加清晰)
class Output
def m
@messages ||= []
end
def puts(message)
m << message #=> here `m` refer to the method above
end
def show_at_messages_variable
@messages
end
end
v = Output.new
v.puts "blah"
v.show_at_messages_variable #=> ["blah"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句