有时我需要处理键/值数据.
我不喜欢使用Arrays,因为它们的大小不受限制(很容易意外添加2个以上的项目,而且最后需要验证大小).此外,指数0和1成为神奇的数字,并在传达意义方面表现不佳("当我说0时,我的意思是head......").
哈希也不合适,因为可能会意外添加额外的条目.
我编写了以下类来解决问题:
class Pair
attr_accessor :head, :tail
def initialize(h, t)
@head, @tail = h, t
end
end
Run Code Online (Sandbox Code Playgroud)
它工作得很好并且解决了这个问题,但我很想知道:Ruby标准库是否已经提供了这样的类?
Ruby 3.2 有一个 Data 类,可让您使用命名字段创建对/元组。
Measure = Data.define(:amount, :unit)
distance = Measure.new(100, 'km') #or Measure.new(amount:100, unit:'km')
distance.amount #=> 100
distance.unit #=> "km"
Run Code Online (Sandbox Code Playgroud)
查看文档。它比这个例子更灵活:
https://docs.ruby-lang.org/en/3.2/Data.html