微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ruby:想要将对象用作字符串

我正在使用一个库,它使用字符串作为ID.我想创建一个可以代替这些ID的类,但看起来像是现有代码的字符串.例如.我有一个现有的测试,看起来像这样:

require 'test/unit'
class IdString < Hash
  def initialize(id)
    @id = id
  end

  def to_s
    @id
  end
end

class TestGet < Test::Unit::TestCase
  def test_that_id_is_1234
    id = IdString.new('1234')

    assert_match(/1234/,id)
  end
end

不幸的是,这失败了:

TypeError:无法将IdString转换为String

有没有办法解决这个问题而不改变所有希望id为字符串的现有代码

解决方法

您应该实现to_str方法,该方法用于隐式转换:

def to_str
  @id
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐