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