logo

ジュリアの感嘆符の規約 📂ジュリア

ジュリアの感嘆符の規約

概要 1

ジュリアでは、関数名の最後に感嘆符bang!を追加することをバンク規約と呼ぶ。これらの関数は、与えられた引数を変更する特徴がある。

コード

function add_1!(x)
    x .+= 1
    return x
end

foo = [2,5,-1]
add_1!(foo)
foo

例えば、上のコードを実行すると、以下の結果が得られる。

julia> foo = [2,5,-1]
3-element Vector{Int64}:
  2
  5
 -1

julia> add_1!(foo)
3-element Vector{Int64}:
 3
 6
 0

julia> foo
3-element Vector{Int64}:
 3
 6
 0

配列fooは関数の外で定義され、「add_1!()」によって要素が$1$ずつ増えて返されただけでなく、引数自体が変更された。

説明

代表的なメソッドであるpop!()は、配列の最後の要素を削除しつつ返すが、この関数が元の配列を変更できない場合、MatlabRのように広く認知されているデータ構造を使用するのが難しく、一般的なプログラミングに慣れているユーザーにとっては非常に不便だったかもしれない。

Pythonで関数ではなくメソッドを使用したときにクラスのデータまで変更される感覚と同様に捉えればいい。ジュリアは言語設計上クラスをサポートしていないので、正確な説明ではないが、Pythonでメソッドを使っていた時が便利だった時に役立つことができる。

環境

  • OS: Windows
  • julia: v1.7.0