2016年12月30日金曜日

開発環境

メタプログラミングRuby 第2版(Paolo Perrotta (著)、角 征典 (翻訳)、オライリージャパン)の1部(メタプログラミング Ruby)、3章(火曜日: メソッド)、3.4(クイズ: バグ退治)を取り組んでみる。

コード(Emacs)

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

class Roulette
  def method_missing(name, *args)
    super unless [:bob, :frank].include? name
    person = name.to_s.capitalize
    number = 0
    3.times do
      number = rand(10) + 1
      puts "#{number}..."
    end
    "#{person} got a #{number}"
  end
end

number_of = Roulette.new
puts number_of.bob
puts number_of.frank
puts number_of.other

入出力結果(Terminal)

$ ./sample1.rb
2...
7...
1...
./sample1.rb:6:in `method_missing': undefined local variable or method `number' for #<Roulette:0x007fe236049398> (NameError)
 from ./sample1.rb:12:in `method_missing'
 from ./sample1.rb:17:in `<main>'
$ ./sample1.rb
5...
8...
3...
Bob got a 3
6...
7...
4...
Frank got a 4
./sample1.rb:6:in `method_missing': undefined method `other' for #<Roulette:0x007fc8d7901198> (NoMethodError)
 from ./sample1.rb:20:in `<main>'
$    

0 コメント:

コメントを投稿