自己代入

広告

変数に対する演算では、変数に対して行った演算結果を改めて同じ変数に対して代入するということが良く行われます。例えば変数に格納されている数値を1だけ増加させるといったことです。丁寧に書くと次のようになります。

num = 10
dumy = num + 1
num = dumy

上記では変数「num」に代入されていた数値に1を加えた結果を変数「dumy」に一旦代入し、そして改めて変数「num」に変数「dumy」を代入しています。

このような処理は次のように記述することが出来ます。

num = 10
num = num + 1

一見すると変な式となっていますが、変数「num」に代入されているオブジェクトに対して1を加算した結果である「11」と言う数値オブジェクトを変数「num」に代入しています。このような記述方法は自己代入と呼ばれ頻繁に使われますので覚えておいて下さい。

自己代入演算子

自己代入はよく使われますので専用の演算子が用意されています。次のようなものが用意されています。

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

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

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

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

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

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

num += 1

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

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

サンプルプログラム

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

test6-1.rb

#! ruby -Ku

num1 = 10
print("num1 = ", num1, "¥n")
num1 += 1
print("num1 + 1 = ", num1, "¥n")

num2 = 8
print("num2 = ", num2, "¥n")
num2 **= 3
print("num2 ** 3 = ", num2, "¥n")

上記のプログラムを「test6-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。

自己代入

( Written by Tatsuo Ikura )