かずきのBlog

C#やJavaやRubyとメモ書き

目次

Blog 利用状況

ニュース

わんくまBlogが不安定になったため、前に書いてたはてなダイアリーにメインを移動します。
かずきのBlog@Hatena
技術的なネタは、こちらにも、はてなへのリンクという形で掲載しますが、雑多ネタははてなダイアリーだけに掲載することが多いと思います。
コメント
プログラマ的自己紹介
お気に入りのツール/IDE
プロフィール
経歴
広告
アクセサリ

書庫

日記カテゴリ

[Ruby]privateなメソッドを呼び出すぞ~

インスパイア元:http://blogs.wankuma.com/pinzolo/archive/2008/03/14/127623.aspx

というわけでprivateなメンバを呼び出してみようと思う。

class A
  def foo
    puts "A#foo"
  end
  private :foo # fooはprivateです
end

このfooを呼び出すのが目的。
Rubyは、動的な言語だから色々なやりかたがあるみたい。ぱっと思いついたものだけで2通りかな。
まず、その1!無理やりpublicにさせて頂きます。

a = A.new # インスタンス作って
class << a # あなたのfooはpublicですよ~
  public :foo
end
a.foo # -> A#foo

無理やりpublicにして呼び出す。カプセル化も何もあったもんじゃありません。
次!!

a = A.new # インスタンス作って
a.send(:foo) # foo呼んでとお願いすると呼べる

うん。普通に呼べた。
ということで、こういうことはしないようにしましょう(

投稿日時 : 2008年3月14日 13:00

Feedback

# re: [Ruby]privateなメンバを呼び出すぞ~ 2008/03/14 13:23 Streetw☆

>あなたのfooはpublicですよ~
睡眠術みたいw
Rubyってなんでもありなんですね。
.sendの方は.NETのリフレクションみたいですね。

# re: [Ruby]privateなメンバを呼び出すぞ~ 2008/03/14 13:24 Streetw☆

睡眠じゃなくて催眠術でした(汗
少し寝不足ですw

# re: [Ruby]privateなメソッドを呼び出すぞ~ 2008/03/14 20:39 かずき

ですね~。
まぁそんな変なコード意図的に書く人はいないし、これが原因でエラーに悩まされることも無いでしょうけどw

# Mens Supra High Tops 2012/12/08 6:51 http://suprafashionshoes.webs.com/

I went over this web site and I think you have a lot of great information, saved to favorites (:.

# sacs longchamp pliage 2012/12/14 23:16 http://www.saclongchampachete.info/category/longch

The stars of this pool will be the comments and also the pictures can be secondary.

# エルメスのバッグ2012年 2012/12/15 16:22 http://www.hermespairs.info/category/エルメス財布

We found numerous great DVDs that many of us were excited to take again. Over the course of two months.

# sacs longchamp pliage cuir 2012/12/16 22:36 http://www.saclongchampachete.com/category/longcha

This is a really wonderful site posting, im delighted I discovered it.

タイトル
名前
Url
コメント