重複の可能性:
undef-なぜrubyでメソッドの定義を解除したいのですか?
誰かがルビーのundefの実用的な使用法をレイアウトできますか?私はそれが組み込まれていないjavascriptやpythonのような言語から来ています。もちろんjavascriptのような言語でそれをシミュレートすることができます:
var obj = { func:function(){alert("works")} }
obj.func() // -> "works"
delete(obj["func"])
obj.func() //->obj.func() is not a function
しかし、私は実際にそれを使用したことはありません。undefが実際に役立つ一般的な状況はありますか?
編集-「Rubyプログラミング言語」という本でこれに出くわしたばかりです。
オブジェクトのコピーを防ぐもう1つの方法は、undefを使用してcloneメソッドとdupメソッドを削除することです。さらに別のアプローチは、cloneメソッドとdupメソッドを再定義して、コピーが許可されていないことを具体的に示すエラーメッセージで例外を発生させることです。このようなエラーメッセージは、クラスを使用しているプログラマーに役立つ場合があります。