From: UENO Kazuaki Date: 2000-10-12T20:37:29+09:00 Subject: [ruby-list:25430] equal?ity of object by object type はじめまして、上野と申します。 全くのRuby初心者でつい先週末から「オブジェクト指向スクリプト言語 Ruby」を読み始めた ところです。第3章まで読んだところで、壁にぶちあたってしまったので、質問させてください。 発端は3章のcsv_splitのところです。 csv.push(last = "") last.concat(char) が何を意味するのか理解するのにちょっと手間取りましたが、これはこれで理解しました。 # 他の言語をあまり知らないと、解説無しには難しい表現かもしれないと思います。 で、その過程でequal?などを使って調べてたんですが、疑問があります。 --- # 同値 > f1=10; f2=10; f1.equal?(f2) true > b1=9999999999999999; b2=9999999999999999; b1.equal?(b2) false > s1="abc"; s2="abc"; s1.equal?(s2) false # クローン > f3=f1.clone; f1.equal?(f3) true > b3=b1.clone; b1.equal?(b3) true > s3=s1.clone; s1.equal?(s3) false # 代入 > f3=f1; f1.equal?(f3) true > b3=b1; b1.equal?(b3) true > s3=s1; s1.equal?(s3) true --- この結果なんですが、代入は当然の結果として、同値とクローンの場合に なぜこうなるかが分かりません。 リテラル、整数、Fixnumいずれかが特別扱いであるとしても b1,b2に同じ数値リテラルを代入したときと、b1をcloneしてb3にしたときの 結果が異なるのはなぜでしょうか? よろしくお願いします。 -- UENO Kazuaki (MSN Messenger: kazuau@hotmail.com)