ruby 二つの枚举を外部イテレーターの机能で突き合わせを行いマージする

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 二つの枚举を外部イテレーターの机能で突き合わせを行いマージする相关的知识,希望对你有一定的参考价值。

class Merger
  def initialize(master, tran)
    @master = master
    @tran = tran
  end

  def match(master, tran)
    puts " match: #{master}, #{tran}"
  end

  def master_only(value)
    puts "m only: #{value}"
  end

  def tran_only(value)
    puts "t only: #{value}"
  end

  def matching()
    master_value = enum_next(@master)
    tran_value = enum_next(@tran)

    while (master_value || tran_value)
      case cmp(master_value, tran_value)
      when 0
        match(master_value, tran_value)
        master_value = enum_next(@master)
        tran_value = enum_next(@tran)
      when -1
        master_only(master_value)
        master_value = enum_next(@master)
      else
        tran_only(tran_value)
        tran_value = enum_next(@tran)
      end
    end
  end

  private

  def enum_next(enum)
    begin
      enum.next
    rescue StopIteration
      false
    end
  end

  def cmp(master, tran)
    return  1 unless master
    return -1 unless tran
    master <=> tran
  end
end

a = [1,3,4,8,6].sort.to_enum
b = [2,3,5,6,7].sort.to_enum

match = Merger.new(a, b)
match.matching()

# m only: 1
# t only: 2
#  match: 3, 3
# m only: 4
# t only: 5
#  match: 6, 6
# t only: 7
# m only: 8

以上是关于ruby 二つの枚举を外部イテレーターの机能で突き合わせを行いマージする的主要内容,如果未能解决你的问题,请参考以下文章

markdown イテレータ

ruby ターミナルとかでファイルの削除リストを提示された时に使う。

markdown ターミナル上でlogcat的を起动して指定のタグのみ出力

python 大熊猫の数据帧の値を他の配列を参照して条件付きで操作するスクリプトを考えてみました。この例では辞书的に「名字のリスト」を阵列として参照しながら,姓ー名の入ったデータ项目の荒いバリデーショ

css 画像スライダー//四角の中に縦に5つのブロックを表示させる//来源https://jsbin.com/ziqiceh

php 投稿からカテゴリーとタグの机能を削除