開発環境
- 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 コメント:
コメントを投稿