0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

君の名は?(配列でよく見かけるこいつ→<<)

Last updated at Posted at 2024-07-04

配列でよく見かけるこの子 << ですが、ショベル演算子(shovel operator)と呼ぶそうです。

※ChatGPTの解説と記事で使われたていた名前です。
日本語としては正確性には欠けるかもしれませんが、ひとまずこの名前で呼びたい。
外国の記事も添付してありますが”shovel operator”って呼んでるしまあセーフ

以下GPTによる解説
私が知りたかったのは1の配列の内容でした。

Rubyの「ショベル演算子(shovel operator)」、つまり<<演算子について詳しく解説します。この演算子は、複数の用途で使用される非常に便利な演算子です。以下に、各用途について具体的な例を交えて説明します。

1. 配列への要素追加

<<演算子は、配列の末尾に新しい要素を追加するために使用されます。これは配列を変更する破壊的な操作です。

例:

array = [1, 2, 3]
array << 4
puts array.inspect  # => [1, 2, 3, 4]

この例では、配列array4を追加しています。<<演算子を使うことで、新しい要素が配列の最後に追加されます。

2. 文字列への連結

<<演算子は、文字列オブジェクトにも使用できます。この場合、文字列の末尾に別の文字列や文字を連結します。

例:

string = "Hello"
string << " World"
puts string  # => "Hello World"

この例では、文字列string" World"を連結しています。<<演算子を使うことで、新しい文字列が既存の文字列の末尾に追加されます。

3. ビットシフト演算

整数に対して<<演算子を使用すると、ビットシフト演算が実行されます。左にシフトすることで、数値が2のべき乗倍になります。

例:

number = 1
number << 3
puts number  # => 8 (1 を 3 ビット左にシフトすると 8 になる)

この例では、1を3ビット左にシフトしています。ビットシフト演算により、結果は8になります。

4. カスタムクラスでの使用

<<演算子はカスタムクラスでもオーバーロード(再定義)することができます。これにより、独自の挙動を持つ演算子を作成することができます。

例:

class MyCollection
  attr_accessor :items

  def initialize
    @items = []
  end

  def <<(item)
    @items << item
  end
end

collection = MyCollection.new
collection << "item1"
collection << "item2"
puts collection.items.inspect  # => ["item1", "item2"]

この例では、MyCollectionクラスに<<演算子をオーバーロードしています。このカスタムクラスでは、<<演算子を使用してコレクションにアイテムを追加することができます。

まとめ

<<演算子は、以下のように多岐にわたる用途で使用される非常に便利な演算子です。

  1. 配列への要素追加
  2. 文字列への連結
  3. ビットシフト演算
  4. カスタムクラスでのオーバーロード

これにより、<<演算子はRubyの多くの部分で使われており、その汎用性と簡潔さから、非常に強力なツールとなっています。

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?