我无法升级或资本化

mac*_*ean 0 ruby

我无法理解为什么word没有资本化或升级.

class Book
  attr_accessor :title
  def title=(changed_title)
    changed_title.split(" ").map!{|word|
      word.to_s.capitalize
      }.join(" ")
    @title = changed_title
  end
end

book = Book.new
book.title = "check"
puts book.title
# >> check
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 8

split(' ')生成一个临时数组.map!改变那个数组.然后它就消失了(因为它没有分配给任何东西).

changed_title保持原始状态("check"),它没有变异.

这是一个修复:

class Book
  attr_reader :title
  def title=(changed_title)
    @title = changed_title.split(" ").map(&:capitalize).join(" ")
  end
end

book = Book.new
book.title = "check"
puts book.title
# >> Check
Run Code Online (Sandbox Code Playgroud)