Spec-Zone.ru › Ruby 2.5

класс Rinda::Tuple

Родитель:
Объект

Кортеж — это базовый объект в программировании Rinda. Кортежи могут быть сопоставлены с шаблонами, если кортеж и шаблон имеют одинаковый размер.

Публичные методы класса

new(ary_or_hash) Показать исходный код
# File lib/rinda/rinda.rb, line 50
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

Создает новый кортеж из ary_or_hash, который должен быть массивом или словарём.

Публичные методы экземпляра

[](k) Показать исходный код
# File lib/rinda/rinda.rb, line 68
def [](k)
  @tuple[k]
end

Метод доступа к элементам кортежа.

each() { |k, v| ... } Показать исходный код
# File lib/rinda/rinda.rb, line 83
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) Показать исходный код
# File lib/rinda/rinda.rb, line 75
def fetch(k)
  @tuple.fetch(k)
end

Извлекает элемент k из кортежа.

size() Показать исходный код
# File lib/rinda/rinda.rb, line 61
def size
  @tuple.size
end

Количество элементов в кортеже.

value() Показать исходный код
# File lib/rinda/rinda.rb, line 93
def value
  @tuple
end

Возвращает сам кортеж

Приватные методы экземпляра

hash?(ary_or_hash) Показать исходный код
# File lib/rinda/rinda.rb, line 99
def hash?(ary_or_hash)
  ary_or_hash.respond_to?(:keys)
end
init_with_ary(ary) Показать исходный код
# File lib/rinda/rinda.rb, line 106
def init_with_ary(ary)
  @tuple = Array.new(ary.size)
  @tuple.size.times do |i|
    @tuple[i] = ary[i]
  end
end

Преобразует ary в допустимый кортеж.

init_with_hash(hash) Показать исходный код
# File lib/rinda/rinda.rb, line 116
def init_with_hash(hash)
  @tuple = Hash.new
  hash.each do |k, v|
    raise InvalidHashTupleKey unless String === k
    @tuple[k] = v
  end
end

Обеспечивает, что hash является допустимым кортежем.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API