2013年09月27日

ruby での値渡し

ruby では値渡ししかない。ただしこれはオブジェクトIDの値渡しなので、オブジェクトそのものに対する操作はメソッドを抜けた後でも影響が残る。たとえば下の関数は、(サンプルの関数だが)引数に渡したオブジェクト自身が変更される。

破壊的メソッドは、オブジェクト自身に対して操作をするため、オブジェクトの内容が変更される。ではjavaでいうプリミティブのような渡し方はできないのか。

each の中を text = text.delete!(ec) ってな感じにすれば 引数に渡したオブジェクトは変更されない。しかしそれでは、オブジェクトが何回もつくられる。それはたぶんコスト高だと思うので、やはり破壊的メソッドを使いたい。

そこで・・・cloneを使って別のオブジェクトを作成し、そのオブジェクトに対して破壊的メソッドを実行する。

この方法ならやりたいことができる。


posted by けんじ at 15:43 | Comment(0) | パソコンいろいろ
- 広告 -
この記事へのコメント
コメントを書く
お名前: [必須入力]

ホームページアドレス:

コメント: [必須入力]

※半角英数字のみのコメントは投稿できません。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。