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
Nokogiri::XML::SAX::Document
Nokogiri::XML::SAX::Parser
次のはbodyをメモリに保持しないらしくより効率的らしい
Nokogiri::XML::SAX::PushParser
Nokogiri::XML::ParseOptions::RECOVER