2017年1月23日月曜日

開発環境

メタプログラミングRuby 第2版(Paolo Perrotta (著)、角 征典 (翻訳)、オライリージャパン)の1部(メタプログラミング Ruby)、4章(水曜日: メソッド)、4.2(クイズ: より良い DSL)を取り組んでみる。

コード(Emacs)

#!/usr/bin/env ruby2.4
# -*- coding: utf-8 -*-

def setup(&block)
  @setups << block
end

def event(description, &block)
  @events << {:description => description, :condition => block}
end

@setups = []
@events = []
load "events.rb"

@events.each do |event|
  @setups.each do |setup|
    setup.call
  end
  if event[:condition].call
    puts "ALERT: #{event[:description]}"
  end  
end

入出力結果(Terminal)

$ ./redflag.rb 
Setting up sky
Setting up mountains
ALERT: the sky is falling
Setting up sky
Setting up mountains
ALERT: it's getting closer
Setting up sky
Setting up mountains
$

0 コメント:

コメントを投稿