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

上一篇 下一篇

猜你喜欢

热点阅读