class Foo private def bar puts "Don't call me!" end end Foo.new.bar #=> NoMethodError: private method `bar' called for #<Foo:0x007fe1232991c0> 一方、Rubyにはsendというメソッドがあって動的なディスパッチが可能となっていますが、これはprivateなメソッドも呼べてしまいます。
![public_sendを信用しちゃいけないよ、というお話 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/12b00fee976fdba8e29d6bb2da8627a149104301/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9cHVibGljX3NlbmQlRTMlODIlOTIlRTQlQkYlQTElRTclOTQlQTglRTMlODElOTclRTMlODElQTElRTMlODIlODMlRTMlODElODQlRTMlODElOTElRTMlODElQUElRTMlODElODQlRTMlODIlODglRTMlODAlODElRTMlODElQTglRTMlODElODQlRTMlODElODYlRTMlODElOEElRTglQTklQjEmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTA5OGZmZWRlODYxM2FlNWE1YzQ0Y2YzNTdiYmMzMjc0%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBva3VyYW1hc2FmdW1pJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0zNjk3MWNkZTE0ZGZjNDdiZTYzNTk0MDBkYWUxZGNjYw%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D04eb2721531d9dca601b7f602dc2e85e)
send(name, *args) -> object[permalink][rdoc][edit] send(name, *args) { .... } -> object __send__(name, *args) -> object __send__(name, *args) { .... } -> object オブジェクトのメソッド name を args を引数にして呼び出し、メソッドの実行結果を返します。 ブロック付きで呼ばれたときはブロックもそのまま引き渡します。 send が再定義された場合に備えて別名 __send__ も用意されており、ライブラリではこちらを使うべきです。また __send__ は再定義すべきではありません。 send, __send__ は、メソッドの呼び出し制限にかかわらず任意のメソッドを呼び出せます。 クラス/メソッドの定義/呼び出し制限 も参照
In computer science, dynamic dispatch is the process of selecting which implementation of a polymorphic operation (method or function) to call at run time. It is commonly employed in, and considered a prime characteristic of, object-oriented programming (OOP) languages and systems.[1] Object-oriented systems model a problem as a set of interacting objects that enact operations referred to by name.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く