2012-02-07 12 views
0

私は既にこの1つを見たWhy are there so many slightly different ways to do the same thing in Ruby?ですが、それは少し助けにはなりません。同じことに対して複数のわずかに異なるセマンティクスと構文を持つことは、IMHOを混乱させ、逆効果的にすることです。私はいくつかの仕様や理由を見つけようとしていましたが、JavaやPythonとは異なり、すべての言語機能が動機付けなどで十分に文書化されています。なぜRubyで文字列を作成するにはいくつかの方法がありますか?

これは単なる文字列ではなく、すべてです。私が探しているのは、日本人が同じことをする100の方法があるということは、明示的な方法よりも優れていると思う理由に関する一般的な説明です。私たちはプログラミング言語、つまり楽器ではなく、ペイントブラシであることを覚えておいてください。それは、仕事を終わらせ、楽しい時間を過ごすためのツールです。いくつかのコードを読んで、特にバグを探しているときに"hello kitty"の代わりに%<hello kitty>を使った理由は不思議ではありません。

私は関連する概念である標準化の利点を見ています。私は誰もが願っています。 Rubyが100種類のカスタマイズされたHTTPプロトコルをサポートしていないのはなぜですか?同じ理由から、Stringを作成する100の方法をサポートしています。

+0

心配しないでください、それはPerlではありません;-)とにかく、「これは言語の仕組みです」メーリングリストはおそらくこの質問にはもっと適していますが、私が与えたもの以外の "決定的な"答えがないので、ここではOTです。 –

答えて

3

文字列を作成するさまざまな方法がある理由は、文字列が必要な理由がたくさんあるためです。文字列は多くのアプリケーションのバックボーンであるため、この機能は堅牢で多様です。

これに慣れば、他の言語の厳密な見積もりシステムが何よりも迷惑になることがわかります。 HTMLでは、埋め込まれたJavaScriptやその他の属性に対して、'"の二重引用符を使用する必要があります。また、の方法では、文字列を円滑にバックスラッシュで白く塗りつぶして文字列を解読できないようにしてください。\引用しています。

良いツールボックスにはさまざまなツールがあります。レンチのサイズが非常に異なるため、レンチセットが混乱していると不平を言ってはいけません。時には特定のものが必要な場合もあります。その後、感謝します。これらのメソッドの多くはPerlのような言語から借用されており、Perlはbashのような他のものに触発されています。

典型的な使用例:

double_quotes = "typical use case with #{variables}" 
single_quotes = 'strict string literals' 
alternate_double_quotes = %Q[<for html="tags('with both quotes', 'and #{variables}')">] 
alternate_single_quotes = %q[<for html="tags('with both quotes')">] 
inline_string = <<END 
Useful for long blocks of freeform 
text such as sample data or templates. 
END 

私はよくSQLの場合のように引用符が含まれている複数行の文字列を表現しようとしたとき%q[ ... ]方法が便利になることを発見しました:

execute(%q[ 
    INSERT INTO examples (id, feature_code) 
    SELECT id, CONCAT('example_', feature_code) 
     FROM things 
     GROUP BY foo 
     ORDER BY bar 
]) 

[ ... ]のペアリングを見つけるのは比較的簡単ですが、エスケープされた引用符が多い場合は簡単ではありません。構文ハイライトエディタを使用していない限り、閉じることができます。

関連する問題