<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Ruby-EnumRuby 快速定義枚舉

          聯(lián)合創(chuàng)作 · 2023-10-01 11:23

          Ruby-Enum 是一組 Ruby 定義枚舉的便捷方式,可用于快速定義枚舉。

          用法

          枚舉可以作為常量或類方法定義和訪問。

          常量

          定義枚舉,并作為常量引用

          class OrderState
            include Ruby::Enum
          
            define :CREATED, 'created'
            define :PAID, 'paid'
          end
          
          OrderState::CREATED # 'created'
          OrderState::PAID # 'paid'
          OrderState::UNKNOWN # raises Ruby::Enum::Errors::UninitializedConstantError
          OrderState.keys # [ :CREATED, :PAID ]
          OrderState.values # [ 'created', 'paid' ]
          OrderState.to_h # { :CREATED => 'created', :PAID => 'paid' }

          類方法

          定義枚舉,并作為類方法引用

          class OrderState
            include Ruby::Enum
          
            define :created, 'created'
            define :paid, 'paid'
          end
          
          OrderState.created # 'created'
          OrderState.paid # 'paid'
          OrderState.undefined # NoMethodError is raised
          OrderState.keys # [ :created, :paid ]
          OrderState.values # ['created', 'paid']

          默認(rèn)值

          指可選,不選的話默認(rèn)為 key。

          class OrderState
            include Ruby::Enum
          
            define :UNSPECIFIED
            define :unspecified
          end
          OrderState::UNSPECIFIED # :UNSPECIFIED
          OrderState.unspecified # :unspecified

          枚舉

          支持所有Enumerable方法

          迭代

          OrderState.each do |key, enum|
            # key and enum.key are :CREATED, :PAID
            # enum.value is 'created', 'paid'
          end
          OrderState.each_key do |key|
            # :CREATED, :PAID
          end
          OrderState.each_value do |value|
            # 'created', 'paid'
          end
          

          映射

          OrderState.map do |key, enum|
            # key and enum.key are :CREATED, :PAID
            # enum.value is 'created', 'paid'
            [enum.value, key]
          end
          
          # => [ ['created', :CREATED], ['paid', :PAID] ]
          

          排序

          OrderState.sort_by do |key, enum|
            # key and enum.key are :CREATED, :PAID
            # enum.value is 'created', 'paid'
            enum.value.length
          end
          
          # => [[:PAID, #<OrderState:0x0 @key=:PAID, @value="paid">], [:CREATED, #<OrderState:0x1 @key=:CREATED, @value="created">]]
          
          瀏覽 26
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本亲子乱一级A片 | 国产人妻AV | 福利一区在线观看 | 日韩黄色三级片 | 久久三级久久三级久久三级 |