[1].each{ break }
は無問題。
f = proc { break } [1].each(&f)
は
in `each': break from proc-closure (LocalJumpError)
となる。差別だよ。撤廃撤廃。[ruby-dev:12070]。orz
状況によって Array#eachと Array#reverse_eachを使い分けたくて、でも処理内容は一緒だからブロックを使いまわそうとして、予め Procオブジェクトにしておいたら上記のエラーに遭遇した、と。
def hoge(&block) puts 'hoge start' yield puts 'hoge end' end hoge { puts 'next'; next } hoge { puts 'break'; break }
これ↑の実行結果はこう↓なる。
hoge start next hoge end hoge start break
ブロックで breakすると、hogeの yieldより後ろが実行されてない。
def hoge(&block) puts 'hoge start' begin yield ensure puts 'hoge end' end end hoge { puts 'next'; next } hoge { puts 'break'; break }
こう↑すると勝手に実行をスキップされない。
hoge start next hoge end hoge start break hoge end
yieldの呼び出しには注意が必要だったのだな。
そういうことです。補足はありません。
細かいことは以前の日記に書いてあるので、ここではビャッとソースを引用。
# index_list.rb # # 「最新」「月」表示に対応した目次を表示。 # recent_listやtitle_listと違い日付のリンク先は日別表示でなくページ内。 # その為に、diary.rhtmlをいじって日付にアンカーを付ける必要がある。 # 骨格にrecent_list.rbを使用。 # [2005-06-15] tdiary-2.1.1 N日表示対応 # [2005-04-20] 月表示では昇順に。 def index_list(date_format = nil, show_title = true) if(@mode == 'latest') limit = @conf.latest_limit; elsif(@mode == 'month') limit = 31; else return ''; end date_format ||= @date_format; latest_start_ymd = @date.strftime('%Y%m%d'); result = %Q[<ul class="index-list">\n]; b = lambda {|ymd| next if(@mode == 'latest' && latest_start_ymd < ymd); break if(limit <= 0); diary = @diaries[ymd]; next unless(diary.visible?); result << %Q[\t<li><a href="##{ymd}">#{diary.date.strftime(date_format)}</a>]; if(show_title && diary.title) result << %Q[ #{diary.title}]; end result << %Q[\n\t\t<ul class="index-list-item">\n]; i = 1; if(!@plugin_files.grep(/\/category.rb$/).empty? && diary.categorizable?) diary.each_section{|section| result << "\t\t<li>"; result << section.categories.collect{|c| category_anchor("#{c}")}.join; result << ' '+section.stripped_subtitle_to_html if(section.stripped_subtitle); result << "</li>\n"; i += 1; } else diary.each_section{|section| if(section.subtitle) result << %Q[\t\t<li>#{section.subtitle_to_html}</li>\n]; end i += 1; } end result << "\t\t</ul>\n\t</li>\n"; limit -= 1; } begin @diaries.keys.sort.send( (@mode=='latest' ? :reverse_each : :each), &b); rescue LocalJumpError # <- break # Procオブジェクトで breakは使えないのだろうけど # それをブロックとして渡してるんやからエラーにせんでもええやん。> ruby-1.8.2 end result << "<ul>"; return apply_plugin(result); end
文字通りチャンネルをまわしてた頃のテレビのような。
土砂降りの雨でパンツの中まで濡れた日から半年以上に渡ってポケットの中の A1301Sは不調でした。
丸一秒間押し続けないとキー入力を認識しないのです。実際の仕組みは知らんけど、仮に正常なら 0.1秒毎にキーの押し下げ状態をスキャンしてたとして、それが 1秒毎になったような。
ワンプッシュ一秒。11桁の番号なら 11秒。このじれったさ。
それが何? 一昨日 1mの高さから落としてからこの半年がなかったみたいに正常に動いてるやん。
機械は叩けば直るというのは平成の今日に至っても真実なのですか。一昨日までの不便を思うとこんなオチにがっかりですよ。
最終更新: 2011-02-13T07:59+0900
末尾の " をURLの一部だとみなすせい。wiki_parser.rbの 198行目辺りの
r = %r<(((https?|ftp):[\(\)%#!/0-9a-zA-Z_$@.&+-,'"*=;?:~-]+)|([0-9a-zA-Z_.-]+@[\(\)%!0-9a-zA-Z_$.&+-,'"*-]+\.[\(\)%!0-9a-zA-Z_$.&+-,'"*-]+))>
を
r = %r<(((https?|ftp):[\(\)%#!/0-9a-zA-Z_$@.&+-,'*=;?:~-]+)|([0-9a-zA-Z_.-]+@[\(\)%!0-9a-zA-Z_$.&+-,'"*-]+\.[\(\)%!0-9a-zA-Z_$.&+-,'"*-]+))>
に変更。メールの方はいじってないけど不都合があるならそっちも " を削ればいい。
tDiary-2.1.3から採用される新Wikiスタイル(HikiDoc)では末尾の " が URLには含まれない模様。つまり修正の必要なし。
このページを読む限りダブルクォーテーションをURIの一部と見なす必要はないような。
山形括弧 "<" と ">" そして二重引用符 (") は排除されます。なぜなら、これらはしばしばURI周辺の区切り子として文書や作法の分野で使われるからです。 "#" 記号は排除されます。なぜなら、これはURIを、URI参照中のフラグメント識別子(第4項)から区切るのに使われるからです。 百分率記号は排除されます。なぜなら、これは回避された文字の符号化に使われるからです。