Techioz Blog

Ruby における [角括弧] のさまざまな用途は何ですか?

概要

Ruby では角括弧 [] 構文によく遭遇しますが、同じことをしているようには見えません。 Ruby における角括弧 [] のさまざまな用途をすべてリストアップして、この無限に多用途に見える小さな記号を私の頭で理解できる人はいるでしょうか? (Ruby インタプリタが混乱することなく、1 つのシンボルでこれほど多くのことができるということはどのようにして可能でしょうか?)

例:

解決策

角括弧は 2 つの厳密なコンテキストと 1 つのオプションのコンテキストにあります。

配列の定義 配列、つまり要素の順序付きリストを提供するデータ構造は、[1,2,3] のような構文を使用してコードで指定できます。これにより、3 つの要素 1、2、3 をその順序で含む配列が作成されます。その後、 each や map などのイテレータ関数を使用して配列を反復処理したり、以下に示すようにインデックス ID によって特定の要素に直接アクセスしたりできます。

配列およびハッシュ内の要素へのアクセス ハッシュ (他の言語ではハッシュマップ、辞書、または連想配列とも呼ばれます) にも、配列と同様の要素が含まれています。これらは、データを順序付けせずに保存する方法がこれとは異なります。データは、配列の場合のように整数 ID によってアクセスされるのではなく、任意のキー (通常はシンボルまたは文字列) を使用してアクセスされます。これは例えばとは異なります。両方に同じ Array 型が使用される PHP。

データへのこのアクセスは、ハッシュと配列の両方に対して [] および []= と呼ばれるメソッドによって容易になります。

my_array = [:a, :b, :c]
second_element = my_array[1]
# => :b
# notice that the first element in arrays always has the index 0

my_hash = {:a => 1, :b => 2, :c => 3}
element_of_b = my_hash[:b]
# => 2

これはブラケットの一般的な使用例です。 Ruby コードでは、ブラケット関数を実装する他のクラスが見つかることがあります。これらは、配列またはハッシュと同様のアクセスを許可するために行われ、一般に、これらのクラスがそれらと同様に動作することが期待されますが、これは決して強制されません。アヒルタイピングも参照してください。

%表記 Ruby には、一般的なものとは別に、文字列 (およびその他のオブジェクト) を作成するための 3 番目の構文があります。この構文を使用すると、コード内のリテラル文字列は ” または ’ で囲まれず、特別な区切り文字を使用します。区切り文字はパーセント記号で始まり、作成するオブジェクトを指定する 1 文字と、区切り文字として選択するほとんどすべての文字が使用されます。

a = %w[foo bar baz]
b = %w{foo bar baz}
c = %wxfoo bar bazx
d = ["foo", "bar", "baz"]

3 つの例はすべて同じ配列を作成します。この構文の使用方法と、Ruby で使用できる他の修飾文字については、ドキュメントを参照してください。

ここで括弧を使用するのが一般的ですが、必須ではないため、必要に応じて置き換えることができます。この表記法の最も一般的な使用法は、(上記のように) 空白で区切られた文字列から要素の配列を作成することであるため、ここでは単なるアドバイスにすぎません。そのため、括弧を使用すると、構文が基本的な配列仕様に似ているため、配列が返されることがさらに明確になります。