Using Tuples in Ruby?

后端 未结 7 1025
醉话见心
醉话见心 2020-12-24 00:24

Does anyone use tuples in Ruby? If so, how may one implement a tuple? Ruby hashes are nice and work almost as well, but I\'d really like to see something like the Tuple clas

7条回答
  •  一整个雨季
    2020-12-24 00:59

    You can mock the Scala tuples with this trick :

    Tuple = Struct.new(:_1, :_2)
    
    2.2.5 :003 > t = Tuple.new("a", "b")
     => #
    2.2.5 :004 > t._1
     => "a"
    2.2.5 :005 > t._2
     => "b"
    

    but here you can't have destructuring:

    2.2.5 :012 > a, b = t
     => {:_1=>"a", :_2=>"b"}
    2.2.5 :013 > a
     => {:_1=>"a", :_2=>"b"}
    2.2.5 :014 > b
     => nil
    

    But thanks to this trick : https://gist.github.com/stevecj/9ace6a70370f6d1a1511 destructuring will work:

    2.2.5 :001 > Tuple = Struct.new(:_1, :_2)
     => Tuple
    2.2.5 :002 > t = Tuple.new("a", "b")
     => #
    2.2.5 :003 > t._1
     => "a"
    2.2.5 :004 > class Tuple ; def to_ary ; to_a ; end ; end
     => :to_ary
    2.2.5 :005 > a, b = t
     => #
    2.2.5 :006 > a
     => "a"
    2.2.5 :007 > b
     => "b"
    

提交回复
热议问题