トップページ > プログラム > 2015年07月30日 > 2wiyWeYf

書き込み順位&時間帯一覧

9 位/141 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000011000103



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Ruby 初心者スレッド Part 57©2ch.net [転載禁止]©2ch.net

書き込みレス一覧

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
ありがとうございます


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。