- Ruby 初心者スレッド Part 57©2ch.net [転載禁止]©2ch.net
423 :デフォルトの名無しさん[sage]:2015/07/30(木) 17:42:41.86 ID:2wiyWeYf - イニシャライザに渡すブロックについて教えてください。
require 'tk' button = TkButton.new { text 'exit' command proc { exit } pack } Tk.mainloop ↑ここのブロック { text 'exit' ... } が {|w| w.text 'exit' ... } (これでも動きます) と同等に機能する仕組みを教えてください。
|
- Ruby 初心者スレッド Part 57©2ch.net [転載禁止]©2ch.net
424 :デフォルトの名無しさん[sage]:2015/07/30(木) 18:43:29.51 ID:2wiyWeYf - class Foo
attr_accessor :text def text(_text="defalut") self.text = _text end def pack print "pack, OK!\n" end def initialize yield if block_given? rescue NameError => err if defined? err.args self.send(err.name, err.args) else self.send(err.name) end end end obj = Foo.new { text "Hello" pack } 試しにこんな感じで書いてみましたが、当然ながら text "Hello" だけ実行されます。 エラーのあった次の文から再開 (retryだと最初からやり直し) 的な書き方があるんでしょうか?
|
- Ruby 初心者スレッド Part 57©2ch.net [転載禁止]©2ch.net
426 :デフォルトの名無しさん[sage]:2015/07/30(木) 22:53:56.70 ID:2wiyWeYf - >>425
ありがとうございます
|