quattro_4 scribble

scribble 落書き (調べた事をただ落書きする)

RubyTapas #106 - #109

106 Class Accessors

★★

class MyLib
  class << self
    attr_accessor :logger
  end
end

も書けるがあまり好まない

class MyLib
  def self.logger
    @logger
  end

  def self.logger=(new_logger)
    @logger = new_logger
  end
end

と書くのを面倒とも思わない

ActiveSupportのものはデフォルト値を与えられるなどより便利

require 'active_support/core_ext'
require 'logger'

class MyLib
  cattr_accessor(:logger) { Logger.new($stderr) }
end

107 String Subscript Assignment

★★★

前にstringとregexのはやったが、さらに文字の置換

str = '107 String Subscript Assignment'
str[/^(\d{3}) (.*)/, 2] = 'How cool is this??'
str                             # => "107 How cool is this??"

regexの中で名前で参照もできる

str = '107 String Subscript Assignment'
str[/^(?<number>\d{3}) (?<title>.*)/, :title] = "It's crazy cool!"
str                             # => "107 It's crazy cool!"

108 The Trouble With Nil

★★

ハッシュ、空メソッド、elseのないif、case、などnilになるパターン

なぜnilになったかが分からないことがあって問題になることがある

Confident Ruby (Book)

109 SAX

★★★

Catch And Throw

SAX - Simple API for XML

Nokogiri::XML::SAX::Document

Nokogiri::XML::SAX::Parser

次のはbodyをメモリに保持しないらしくより効率的らしい

Nokogiri::XML::SAX::PushParser

Nokogiri::XML::ParseOptions::RECOVER