タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

codingとtipsとoopに関するcu39のブックマーク (10)

  • RSpecでprivateメソッドをテストする

    Object#send(send)ならメソッドの呼び出し制限に関わらずメソッドを呼び出すことが可能なので、privateメソッドもテスト可能。 確か、1.9以降はメソッド呼び出し制限がObject#sendにも影響するとどこかで見た記憶があるのだけど結局そうはなっていないみたい。 1.9.1、1.8.7で確認済み。 ちなみにオマケ。 Pythonはメソッド名の前にアンダースコアを2つけるとprivateなメソッドになるのだけれど、実際のところ別名でメソッドを定義してそちらを呼び出してるっぽい。別名で定義された方はprivateではないので、そちらを呼び出してテストすることが可能。 他にもJavaだったらsetAccessible(True)を実行すればpublicなメソッドに変更されるのでテスト可能。と聞いただけで確認はしていない。

    cu39
    cu39 2012/09/20
    instance.send(:method_name, arg)
  • http://hmdt.jp/oop/methodAddition.html

  • Perl Tips - Unknown::Programming

    PerlのTipsになりそうなものを過去ログから引っ張り出してみました。 ランダムな文字列を生成するString::Random - Unknown::Programming local our $hoge; - Unknown::Programming whileでファイルハンドルをループする時の暗黙の$_について - Unknown::Programming リストの要素数を取得する - Unknown::Programming Perl6::Say-0.10 - Unknown::Programming クラスメソッドのインポートをModule::Compileでやっちゃう。 - Unknown::Programming メソッド呼び出しで継承する - Unknown::Programming どう書くでリハビリ - Unknown::Programming メソッド名一覧どーかく?

    Perl Tips - Unknown::Programming
  • エイリアスメソッドの作成方法の続き - Unknown::Programming

    エイリアスメソッドの作成方法 - Unknown::Programming 前に上記記事でメソッドのエイリアスを作る方法を書いたんだけども。 Class::C3使ってるときにうまくいかないという結論のまま終わってました。 一応その後、id:charsbarさんがエイリアスメソッドの作成方法 - Charsbar::Noteという記事でAUTOLOADを使って実現する方法を書いてくれたんだけど、AUTOLOADだと全体に影響を及ぼしそうなので他に影響を与えずにエイリアスメソッドを作りたいなぁと。 そこで、最近Perl Hacks読んで思いついたので若干無茶な方法だけどエイリアスメソッドを作るモジュールを考えてみました。 名づけてSub::Alias。 package Sub::Alias; use strict; use warnings; use B::Deparse; use base

    エイリアスメソッドの作成方法の続き - Unknown::Programming
  • エイリアスメソッドの作成方法 - Charsbar::Note

    最初に書いたものはいささかトンチキなことをしていたので再度書き直し。fbisさんがエイリアスメソッドの作成方法で書かれていた あと、問題点としてはgoto使うにしても型グロブ使うにしてもClass::C3とかでhogeメソッド内でnext::methodを使ってる場合は hoge_aliasメソッドではなくhogeメソッドに行ってしまうところかな。 package Hoge; use strict; sub hoge_alias { print "Hoge::hoge_alias\n" } sub hoge { print "Hoge::hoge\n" } package Muge; use strict; use base qw/Hoge/; use Class::C3; sub hoge { my $self = shift; $self->next::method; } sub ho

    エイリアスメソッドの作成方法 - Charsbar::Note
  • エイリアスメソッドの作成方法 - Unknown::Programming

    ここにhogeというメソッドがあるとして sub hoge { my $self = shift; my $num = shift; return $num + 10; } こいつと同じ動きをするhoge_aliasメソッドを作成する場合、 例えば下記のようにhogeメソッドにそのまま投げるやり方がすぐ思いつく方法かな。 sub hoge_alias { shift->hoge(@_) } これでもいいんですが、hogeメソッドでcaller関数なんかを使って何かしら処理している場合に問題になる可能性があるので、gotoとか使ってみる。 sub hoge_alias { goto &hoge } だけど、型グロブ期な僕は下記のようにするのが好きです。 *hoge_alias = \&hoge; ただし、use warningsとかしてると「Name "main::hoge_alias" u

    エイリアスメソッドの作成方法 - Unknown::Programming
  • 確実な終了処理を行うには?

    連載目次 .NET Frameworkは、ガベージ・コレクションの機能により、使用済みのメモリ領域を自動的に回収する。それが単なるメモリ領域なら、使用可能なメモリ容量に余裕がある限り、回収されずに放置されるケースがあってもそれほど問題とはならない。しかし、極めて限られた資源や、特別な特徴を持った資源は、使い終わったらすぐに解放してやらねば不都合が起きる場合がある。その1つの例は、ファイルである。ファイルを開いて読み書きすることは容易であるが、.NET Frameworkで何のオプションも指定せずにファイルを開くと排他的な共有モードになるため、それを閉じるまでそのファイルにアクセスすることができなくなる。つまり、ファイルの読み書きが終了しても閉じないで放置すると、ほかの用途で開けないという弊害が発生する。 以下はファイルを閉じないことにより不都合が生じる例である。この場合、OpenTextメ

    cu39
    cu39 2007/11/20
    IDisposableインターフェイスの解説あり。
  • prototype.js でデザインパターン - Singleton

    次は「たった1つのインスタンス」Singleton パターンです。あるクラスがあって、そのクラスのインスタンスは実行アプリケーションのライフサイクルを通じて唯一に制限したい、何回生成しても同じインスタンスである、というものです。 var Main = Class.create(); Main.prototype = { initialize : function() {}, main : function() { document.writeln('Start.<br>'); var obj1 = Singleton.getInstance(); var obj2 = Singleton.getInstance(); if (obj1 == obj2) { document.writeln('obj1 と obj2 は同じインスタンスです。<br>'); } else { document

    prototype.js でデザインパターン - Singleton
  • 最速インターフェース研究会 :: JavaScriptのデザインパターン - Singleton

    JavaScriptじゃねえと書けねえよ、ってやり方でデザインパターンを実装してみるコーナー。とはいってもデザインパターンとか良くわからないので適当に覚えながら作る。 間違ってる箇所あったらつっこんでくれるとありがたいです。 わかりやすい文章を書く能力が欠如してるのでデザインパターンって何だとかそういうのはこっち参照。 http://d.hatena.ne.jp/naoya/20050813/1123924312 JavaScriptのコンストラクタはPerl同様自在に定義できます。returnでobjectを返してやれば、newの結果としてそいつを使います。 普通にシングルトンなクラスを実装するにはこんな感じだと思います。 function Singleton(){ var self = arguments.callee; if(self.instance == null){ this.

  • javascript [paulownia.jp]

    Java等のオブジェクト指向はクラスベースのオブジェクト指向と呼ばれる。一方、JavaScriptはプロトタイプベース、あるいはインスタンスベースオブジェクト指向と呼ばれる。 クラスベースは、まずクラスを定義し、クラスを型とするインスタンスを作成することでプログラミングする。プロトタイプベースによるオブジェクト指向では、クラスの定義は必須ではなく場合によってはクラスという概念自体が存在しない。既存のオブジェクトのクローンとして新しいオブジェクトを作成し、そのオブジェクトに独自の性質を付加してプログラミングする。 JavaScriptのオブジェクトの性質は動的に変更可能。Java等では一度決定したオブジェクトの振る舞いは変更できないが、JavaScriptでは実行中の任意の場所でメソッドの動作を変更したり、新しく追加したり、削除したりすることができる。

  • 1