類別 Rinda::Tuple

元組是 Rinda 程式設計中的基本物件。如果元組和範本大小相同,則可以將元組與範本進行比對。

公開類別方法

new(ary_or_hash) 按一下以切換來源

ary_or_hash 建立新的 Tuple,它必須是 ArrayHash

# File lib/rinda/rinda.rb, line 53
def initialize(ary_or_hash)
  if hash?(ary_or_hash)
    init_with_hash(ary_or_hash)
  else
    init_with_ary(ary_or_hash)
  end
end

公開實例方法

[](k) 按一下以切換來源

元組元素的存取器方法。

# File lib/rinda/rinda.rb, line 71
def [](k)
  @tuple[k]
end
each() { |k, v| ... } 按一下以切換來源

遍歷元組,產生索引或金鑰和值,從而確保陣列的遍歷方式類似於雜湊。

# File lib/rinda/rinda.rb, line 86
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
fetch(k) 按一下以切換來源

從元組中擷取項目 k

# File lib/rinda/rinda.rb, line 78
def fetch(k)
  @tuple.fetch(k)
end
size() 按一下以切換來源

元組中的元素數量。

# File lib/rinda/rinda.rb, line 64
def size
  @tuple.size
end
value() 按一下以切換來源

傳回元組本身

# File lib/rinda/rinda.rb, line 96
def value
  @tuple
end

私人實例方法

hash?(ary_or_hash) 按一下以切換來源
# File lib/rinda/rinda.rb, line 102
def hash?(ary_or_hash)
  ary_or_hash.respond_to?(:keys)
end
init_with_ary(ary) 按一下以切換來源

ary 混合成有效的 Tuple

# File lib/rinda/rinda.rb, line 109
def init_with_ary(ary)
  @tuple = Array.new(ary.size)
  @tuple.size.times do |i|
    @tuple[i] = ary[i]
  end
end
init_with_hash(hash) 按一下以切換來源

確保 hash 是有效的 Tuple

# File lib/rinda/rinda.rb, line 119
def init_with_hash(hash)
  @tuple = Hash.new
  hash.each do |k, v|
    raise InvalidHashTupleKey unless String === k
    @tuple[k] = v
  end
end