-1

これが私がやりたいことです:

class number {
  var $value ;
  function number($n=0) {
    $this->value = $n ;
  }
  function add($n) {
    $x = new number($n) ;
    $this->value += $x->value ;
  }
}

この例はもちろんばかげていますが、より深刻なプロジェクトでやりたい再帰の種類を示しています。(実際には数値ではなく画像を操作しますが、ここでは問題ないと思います。)

それで、それはうまくいくはずですか?

ありがとう

4

2 に答える 2

1
class Number {

    protected $value;

    public function __construct($n = 0) {
        $this->value = $n;
    }

    public function add($n) {
        $x = new static($n);  // or self($x), if you're on PHP < 5.3
        $this->value += $x->value;
    }

}

実際に動作するように修正しました。はい、これは完全に可能であり、賢明です (まあ、この特定のコードが意味をなすかどうかは議論の余地がありますが、一般的には)。これは実際には再帰ではありません。別のクラスのメソッド内でクラスをインスタンス化しているだけです。インスタンス化するクラスが、インスタンス化するメソッドが属するクラスと同じであることは少しも問題ではありません (これは複雑な文です)。

于 2013-10-28T12:31:43.663 に答える