a = [0,1,2,3]っていうのをRuby チュートリアル - 4. 主なクラスで見かけた。
a[3] = a
p a
#=>[0,1,2,[...]]
プログラミング言語 Ruby
posted with amazlet at 09.02.08
まつもと ゆきひろ David Flanagan
オライリージャパン
売り上げランキング: 2396
オライリージャパン
売り上げランキング: 2396
VMware Fusion for Mac | Fusion 入門
[0,1,2,[...]]の
[...]は配列である a を示している。Ruby初心者としては、
#=>っていうのを期待したんだけどそうじゃあない。これは代入とはオブジェクトとはなんぞやということを改めて考えなければならないようだ。 オブジェクトIDを確認してみようと、下記を実行してみると、
[0,1,2,[0,1,2,3]]
a = [0,1,2,3]というのは本当によくできた話だと思った。当たり前といえば当たり前なんだろうけども、理解の浅い初心者にとってはなんともおどろきであり、また、なるほどそう来たか、とわくわくせざるを得ない。僕の右手が僕だとすれば、僕の右手はつねに僕と等しいわけだ。僕の右手は僕だからその僕の右手も僕なんだ。
a[3] = a
p a.object_id
p a[3].object_id
#=>
-605469308
-605469308
すると興味はその計算をだれがどうやって、どういう順序でやったかってことにうつる。これって「せーの」でやらないとこういう答えって出ないと思うんだよね。「僕」の『右手』が「僕」になった瞬間その「「僕の『右手』の僕」の『右手』」も「僕」になっちゃうんだからさ。これってものすごく怪奇的で猟奇的なことだと思わない?
トラックバック(0)
このブログ記事を参照しているブログ一覧: 僕の右手が僕ならば
このブログ記事に対するトラックバックURL: http://jippenshar.com/igc/mt/mt-tb.cgi/185



コメントする