为什么不使用@messages?

以下是The Rspec Book中的内容我想知道为什么messages << messageindef 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么不使用setXXXSize()?

来自分类Dev

为什么不使用UASP

来自分类Dev

为什么使用NSEnumerationReverse而不使用NSEnumerationForward

来自分类Dev

为什么堆栈使用数组,为什么不使用链表

来自分类Dev

为什么MongoDB不使用索引交集?

来自分类Dev

为什么不使用PictureBox控件?

来自分类Dev

为什么这里不使用LINQ ToList?

来自分类常见问题

为什么不使用S :: x?

来自分类Dev

为什么不使用Xcode编译测试?

来自分类Dev

为什么不使用@RequestParam而不是@ModelAttribute

来自分类Dev

为什么在解组期间不使用ObjectFactory?

来自分类Dev

为什么不使用golang WSGI实现

来自分类Dev

为什么Postgres不使用索引?

来自分类Dev

为什么MongoDB不使用索引交集?

来自分类Dev

为什么此查询不使用索引?

来自分类Dev

Drools为什么不使用Java 8?

来自分类Dev

为什么不使用Bootstrap 2.3.2?

来自分类Dev

为什么EntityFramework不使用我的谓词?

来自分类Dev

为什么不使用GOTO语句?

来自分类Dev

为什么我不使用100%?

来自分类Dev

HyperLogLog交集:为什么不使用min?

来自分类Dev

为什么SendMessageTimeout不使用DWORD?

来自分类Dev

为什么TextBlob不使用/检测否定?

来自分类Dev

为什么不使用查找优化?

来自分类Dev

为什么我的appendChild不使用createDocumentFragment?

来自分类Dev

为什么FutureTask不使用AQS内部了?

来自分类Dev

为什么不使用指针读取Struct?

来自分类Dev

为什么CFStream不使用TLS 1.3?

来自分类Dev

为什么不使用javascript声明变量?