岡田さん

ありがとうございます。

> 岡田と申します。

> 最初は不思議に思いますが、補足すると

> Ruby では代入は特別な操作で a = 1 というのは a という変数名にたいす
> る操作です。
> (ですから再定義できません)
> a + 1 というのは a に入っているオブジェクトに対する演算です。
> ( + 演算子は再定義できます)

> a += 1 はa = a + 1 の単なるシンタックスシュガーです。

ということは、
a = 1 =>a に 1を代入する
a = 'a' は a に aに、aという文字を代入する
a = a + 1 は、 aの'a'と1を + で実行するが、型が違うためエラー

ということですね。
色々試してみます。
ありがとうございました。