Ruby值对象
2015-09-04 本文已影响61人
chenge微博谈
实例代码
class EmailAddress
include Comparable
def initialize(string)
if string =~ /@/
@raw_email_address = string.downcase.strip
else
raise ArgumentError, "email address must have an '@'"
end
end
def <=>(other)
raw_email_address <=> other
end
def to_s
raw_email_address
end
protected
attr_reader :raw_email_address
end
调用代码
$ irb>> require "./email_address" #=> true
>> EmailAddress.new("user@example.com") == "user@example.com" #=> false (would have previously been true)
>> EmailAddress.new("user@example.com") == EmailAddress.new("user@example.com") #=> true