class RBS::Types::Optional - rbs: Ruby Standard Library Documentation

# class RBS::Types::Optional

### Attributes

location[R]
type[R]

### Public Class Methods

new(type:, location:) click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 637
    def initialize(type:, location:)
      @type = type
      @location = location
    end

### Public Instance Methods

==(other) click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 642
    def ==(other)
      other.is_a?(Optional) && other.type == type
    end

Also aliased as: eql?
each_type() { |type| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 678
    def each_type
      if block_given?
        yield type
      else
        enum_for :each_type
      end
    end

eql?(other)
Alias for: ==
free_variables(set = Set.new) click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 652
    def free_variables(set = Set.new)
      type.free_variables(set)
    end

has_classish_type?() click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 708
    def has_classish_type?
      each_type.any? {|type| type.has_classish_type? }
    end

has_self_type?() click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 704
    def has_self_type?
      each_type.any? {|type| type.has_self_type? }
    end

hash() click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 648
    def hash
      self.class.hash ^ type.hash
    end

map_type() { |type| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 693
    def map_type(&block)
      if block
        Optional.new(
          type: yield(type),
          location: location
        )
      else
        enum_for :map_type
      end
    end

map_type_name(&block) click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 686
    def map_type_name(&block)
      Optional.new(
        type: type.map_type_name(&block),
        location: location
      )
    end

sub(s) click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 660
    def sub(s)
      self.class.new(type: type.sub(s), location: location)
    end

to_json(state = _ = nil) click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 656
    def to_json(state = _ = nil)
      { class: :optional, type: type, location: location }.to_json(state)
    end

to_s(level = 0) click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 664
    def to_s(level = 0)
      case t = type
      when RBS::Types::Literal
        case t.literal
        when Symbol
          return "#{type.to_s(1)} ?"
        end
      when RBS::Types::Proc
        return "(#{type.to_s(1)})?"
      end

      "#{type.to_s(1)}?"
    end

with_nonreturn_void?() click to toggle source

    # File rbs-3.8.0/lib/rbs/types.rb, line 712
    def with_nonreturn_void?
      each_type.any? {|type| type.with_nonreturn_void? }
    end