変数へ自己代入を行う

変数に対する演算では、変数に対して行った演算結果を改めて同じ変数に対して代入するということが良く行われます。このような演算を自己代入とも呼びます。ここでは Ruby で変数に対して自己代入を行う方法について解説します。

(2022 年 10 月 13 日公開 / 2022 年 10 月 27 日更新)

変数へ自己代入を行う

例えば変数に格納されている数値に 1 を加算して同じ変数に格納しなおす場合で考えてみます。丁寧に書くと次のようになります。

num = 10
dumy = num + 1
num = dumy

上記では変数 num の値に 1 を加えた結果をいったん変数 dumy に格納したあと、変数 dumy の値を変数 num に代入しています。

このような処理は自己代入を使うと次のように記述することができます。

num = 10
num = num + 1

上記では変数 num の値に 1 を加えた結果を変数 num に代入しています。 num = num + 1 のような式は慣れていないと変な感じに見えますが、 = 演算子の左辺の結果を右辺に代入するため結果として変数 num の値が 1 だけ増加します。

自己代入演算子を使う

自己代入を簡潔に記述するための演算子が用意されています。次のようなものが用意されています。

+=, -=, *=, /=, %=, **=

これらは数値オブジェクトで用意されている四則演算用の演算子に = を付けたものです。次のように使います。

変数 += 式
変数 -= 式
変数 *= 式
変数 /= 式
変数 %= 式
変数 **= 式

これらはそれぞれ次のように記述した場合と同じです。

変数 = 変数 + 式
変数 = 変数 - 式
変数 = 変数 * 式
変数 = 変数 / 式
変数 = 変数 % 式
変数 = 変数 ** 式

「式」には数値オブジェクトや他の演算式などを記述します。例えば変数に格納されている数値を 1 だけ増加させるには次のように記述できます。

num += 1

これは次のように記述した場合と同じです。

num = num + 1

自己代入演算子を使用することで自己代入を簡潔に記述する場合に使用されます。

※なお自己代入演算子は他にも用意されています。他のものについては別のページで確認します。

サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

num = 1
for i in 1..10 do
  puts("num = " + num.to_s)
  num *= 2
end

下記のように実行して下さい。

自己代入

繰り返し処理を行う for 文の中で、変数 num を 2 倍にするのに自己代入を使用しています。

-- --

Ruby で変数に対して自己代入を行う方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。