4

次の 2 つのステートメントは、同じ結果を生成します。

arr = %w(abc def ghi jkl)

arr = ["abc", "def", "ghi", "jkl"]

どのような場合%wに使用する必要がありますか?

上記の場合、配列が必要です["abc", "def", "ghi", "jkl"]。理想的な方法はどちらですか: 前者 (と%w) または後者?

4

4 に答える 4

5

%w[...]通常の配列と比較していつ使用するのですか? 2つを見て、それらを入力し、今何をしたかを考えるだけで、理由を思いつくことができると思います.

%w[...]配列に変換したい単語のリストがある場合に使用します。%w[...]配列に新しい要素を簡単に追加できるため、ループオーバーしたいパラメーターや、将来追加したいことがわかっているコマンドがある場合に使用します。配列の定義には視覚的なノイズが少なくなります。

だます空白が埋め込まれた要素がある場合は、文字列の通常の配列を使用します%w。文字列ではない要素を含む必要がある配列に使用します。"要素をコンマで囲み、'間にコンマを入れると、視覚的なノイズが発生しますが、任意のオブジェクト型で配列を作成することもできます。

したがって、自分にとって最も理にかなったときに、どちらを使用するかを選択します。それは「プログラマーの選択」と呼ばれます。

于 2013-05-10T07:20:20.857 に答える
0

あなたが正しく指摘したように、それらは同じ結果を生成します。したがって、決定するときは、より単純なコードを生成するものを選択してください。この場合、それは%wオペレーターです。前の質問の場合、それは配列リテラルです。

于 2013-05-10T07:18:55.690 に答える
0

Using を使用%wすると、文字列を引用符で囲むのを避けることができます。

さらに、次のようなショートカットがあります。

%W - double quotes
%r - regular expression  
%q - single-quoted string
%Q - double-quoted string
%x - shell command

詳細については、「%w(array) とはどういう意味ですか?」を参照してください。

于 2013-05-10T07:31:11.883 に答える