Как мне сделать метод, который возвращает результат последнего вызванного метода? - PullRequest
0 голосов
/ 10 января 2020

У меня есть класс, и у меня есть некоторые методы, предназначенные для вычислений, которые я сделал, такие какdiv (), multiply () и т. Д. c.

И я хочу создать новый метод, который мы бы назвали showResult (), который будет возвращать результат последнего вызванного метода вычисления. Например:

$foo = new MyTinyCalculator(30, 12);
echo $foo->add () . “\n”;
echo $foo->subtract () . “\n”;
echo $foo->multiply () . “\n”;
echo $foo->divide () . “\n”;
echo $foo->showResult () . “\n”;
/* displays
    42
    18
    360
    2.5
    2.5
*/

Вот что я пробовал до сих пор:

class MyTinyCalculator
{

    private $_a;
    private $_b;
    private $_result;


    function __construct(int $a, int $b)
    {
        $this->_a = $a;
        $this->_b = $b;
    }


    function getA()
    {
        return $this->_a;
    }
    function getB()
    {
        return $this->_b;
    }
    function setA($a)
    {
        $this->_a = $a;
    }
    function setB($b)
    {
        $this->_b = $b;
    }
    function getResult()
    {
        return $this->_result;
    }
    function setResult($result)
    {
        $this->_result = $result;
    }
    public function add()
    {

        return $this->_a + $this->_b . '<br>';
        $this->_result = $this->_a + $this->_b;
    }
    public function substract()
    {
        return $this->_a - $this->_b . '<br>';
        $this->_result = $this->_a - $this->_b;
    }

    public function divide()
    {
        return $this->_a / $this->_b . '<br>';
        $this->_result = $this->_a / $this->_b;
    }
    public function multiply()
    {
        return $this->_a * $this->_b . '<br>';
        $this->_result = $this->_a * $this->_b;
    }
    function showResult()
    {
        echo $this->_result;
    }
}
$calculator = new MyTinyCalculator(30, 12);
echo $calculator->add();
echo $calculator->substract();
echo $calculator->multiply();
echo $calculator->divide();
echo $calculator->showResult();

Отображается только:

42
18
360
2.5

1 Ответ

1 голос
/ 10 января 2020

В функции, когда вы вызываете return, функция останавливается на этом, поэтому строка, которой вы присваиваете значение $this->_result, не будет вызываться

Это должно работать для вас

    public function add()
    {
        $this->_result = $this->_a + $this->_b;
        return $this->_result . '<br>';
    }
    public function substract()
    {
        $this->_result = $this->_a - $this->_b;
        return $this->_result . '<br>';
    }

    public function divide()
    {
        $this->_result = $this->_a / $this->_b;
        return $this->_result . '<br>';
    }
    public function multiply()
    {
        $this->_result = $this->_a * $this->_b;
        return $this->_result . '<br>';
    }
    function showResult()
    {
        echo $this->_result;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...