From: Nobuyoshi Nakada Date: 2009-03-28T08:13:12+09:00 Subject: [ruby-dev:38193] Re: Ruby1.9系のString#%の挙動について なかだです。 At Sat, 28 Mar 2009 04:37:10 +0900, Masao Mutoh wrote in [ruby-dev:38192]: > irb(main):003:0> 'lang is %{lang}' %{:name => 'Unknown'} > KeyError: key not found > > ruby-gettextが提供しているString#%(ruby-1.8向け)は上記を許容しているため > エラーになりません。 こういうことはできますが、うれしくないでしょうね。 $ ruby -v -e 'printf("lang is %{lang}\n", {}) do |k| "%{#{k}}" end' ruby 1.9.2dev (2009-03-25 trunk 23068) [universal.x86_64-darwin9.0] -e:1: warning: too many arguments for format string lang is %{lang} 引数のHashのデフォルト値を使うならともかく、さすがにこれは意図し ていない挙動だと思います。 (1) 許容しない (2) 無視する (3) Hashのデフォルト値を使う あたりでしょうが、(3)はフォーマットの情報が渡されないのであまり 使い道はないかも。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦