创建自己的标题化方法

时间:2014-05-20 07:07:11

标签: ruby rspec

以下代码通过了rspec测试:

class Book

  attr_reader :title

    def initialize(title=nil)
      @title = title && title.capitalize!
    end

    def title=(new_title)
        @title = new_title && new_title.capitalize!
    end

end

我不明白为什么,或者根本就没有这个代码......

  1. attr_reader:我读到它为它做了一个实例变量 传递的参数(所以@title)是正确的吗?
  2. title&& title.capitalize! :这是做什么的?
  3. title =(new_title):为什么参数之前有等号?

1 个答案:

答案 0 :(得分:0)

def title=(new title)

定义了一个名为title =的方法,它将实例变量设置为参数'new_title'

此代码:

@title = new_title && new_title.capitalize!

如果new_title为nil,则不会调用大写函数。 因此,它处理的情况是,nil作为参数传递,而不会通过尝试调用大写来引发异常。

感叹号表示大写方法修改了new_title变量。