A tuple is the elementary object in Rinda
programming. Tuples may be matched against templates if the tuple and the template are the same size.
Accessor method for elements of the tuple.
# File ruby-3.1.2/lib/rinda/rinda.rb, line 69 def [](k) @tuple[k] end
Iterate through the tuple, yielding the index or key, and the value, thus ensuring arrays are iterated similarly to hashes.
# File ruby-3.1.2/lib/rinda/rinda.rb, line 84 def each # FIXME if Hash === @tuple @tuple.each { |k, v| yield(k, v) } else @tuple.each_with_index { |v, k| yield(k, v) } end end
Fetches item k
from the tuple.
# File ruby-3.1.2/lib/rinda/rinda.rb, line 76 def fetch(k) @tuple.fetch(k) end
# File ruby-3.1.2/lib/rinda/rinda.rb, line 100 def hash?(ary_or_hash) ary_or_hash.respond_to?(:keys) end
Munges ary
into a valid Tuple
.
# File ruby-3.1.2/lib/rinda/rinda.rb, line 107 def init_with_ary(ary) @tuple = Array.new(ary.size) @tuple.size.times do |i| @tuple[i] = ary[i] end end
Ensures hash
is a valid Tuple
.
# File ruby-3.1.2/lib/rinda/rinda.rb, line 117 def init_with_hash(hash) @tuple = Hash.new hash.each do |k, v| raise InvalidHashTupleKey unless String === k @tuple[k] = v end end