From: EGUCHI Osamu Date: 1997-09-23T16:51:58+09:00 Subject: [ruby-list:4537] Re: Object#freeze えぐち です。 > > "EGUCHI Osamu" writes: > > : a="abc"; a.freeze; a+= "d"; print "a=", a.inspect, "\n" > :a="abcd" > : > :という様に、定数性を確保するのは ruby では結構厄介な問題なんですね。 > > a+="d" だと + はコピーを作るのでそのテストは意味がないです. > concat とかじゃないと. a << "d" なら > `<<': TypeError: can't modify frozen string > になります. > > $: とかは readonly だから $: += "." はできないわけです. > でも $: << "." はできる. ここがひっかかるところかもしれない. $:.type ==> Array なので、ちょっと違うぞなのですが、 「Object の時から、 freeze を実装してしまいましょう」 という文脈からいってそのとおりです。 、、だんだん、#taint, #tainted? も文字列以外(Object???)から 実装した方がいいような気が、、、文字以外から Insecure が進入しますよね?!