開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- ruby 2.3 (プログラミング言語)
メタプログラミング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 コメント:
コメントを投稿