Translate

2013年8月17日土曜日

[perl]クラスメソッド

学習のため、某JavaのソースコードをPerlで表現してみる。


public class Counter {
    static int num = 0;
    static int getCounter(){
        return ++num;
    }                                                                              
}

実行してみる
public class SandBox extends Counter {
       public static void main(String[] args){
           System.out.println(Counter.getCounter());
           System.out.println(Counter.getCounter());
           System.out.println(Counter.getCounter());
           System.out.println("クラスフィールド:" + Counter.num);
       }
}

実行結果:
1
2
3
クラスフィールド:3


perlで表現してみます。
package Counter;
use strict;
use warnings;

our $num = 0;                                                                      

sub getCounter{
    return ++$num;
}

1;


use strict;                                                                        
use warnings;
use utf8;
use feature 'say';
binmode STDOUT, ":utf8";

use lib qw(lib);
use Rectangle;
use Counter;

say Counter::getCounter();
say Counter::getCounter();
say Counter::getCounter();
say "クラス内変数:". $Counter::num;

実行結果:
1
2
3
クラス内変数:3

たいした違いはないですね。
クラス内の変数にアクセスするためにourで宣言しています。

0 件のコメント: