Ruby值对象

实例代码

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容