Spec-Zone.ru › Ruby 2.6

класс Rinda::Template

Родитель:
Rinda::Tuple

Шаблоны используются для сопоставления кортежей в Rinda.

Общедоступные методы экземпляра

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

Псевдоним для match.

match(tuple) Показать исходный код
# File lib/rinda/rinda.rb, line 148
def match(tuple)
  return false unless tuple.respond_to?(:size)
  return false unless tuple.respond_to?(:fetch)
  return false unless self.size == tuple.size
  each do |k, v|
    begin
      it = tuple.fetch(k)
    rescue
      return false
    end
    next if v.nil?
    next if v == it
    next if v === it
    return false
  end
  return true
end

Сопоставляет этот шаблон с tuple. Размер tuple должен совпадать с размером шаблона. Элемент с nil значением в шаблоне используется как символ подстановки, сопоставляя любое значение в соответствующей позиции в кортеже. Элементы шаблона сопоставляются с tuple если они #== или ===.

Template.new([:foo, 5]).match   Tuple.new([:foo, 5]) # => true
Template.new([:foo, nil]).match Tuple.new([:foo, 5]) # => true
Template.new([String]).match    Tuple.new(['hello']) # => true

Template.new([:foo]).match      Tuple.new([:foo, 5]) # => false
Template.new([:foo, 6]).match   Tuple.new([:foo, 5]) # => false
Template.new([:foo, nil]).match Tuple.new([:foo])    # => false
Template.new([:foo, 6]).match   Tuple.new([:foo])    # => false

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