在这里,我有一个具有挑战性的 php 函数,它应该返回一个 instanceof Traversable(迭代器),并且还需要满足测试该函数的其他断言。
函数没有错误,它计算斐波那契数。功能是可以修改的,就是专门这样构造来挑战别人的。但是有一个限制,只标记为 !!! (三个感叹号)可以更改。
public function getFibonacci($n) {
$n2 = -($n1 = 1);
while ($n --> -1) {
$r = $n1 += $n2 and 0 or !!![$n + 1 => $n1];
$n2 = $n1 - $n2;
}
return $r;
}
这是一个测试getFibonacci函数的phpunit代码
assertTrue(
($res = (getFibonacci(8))
&& ($res instanceof \Traversable)
&& count($arr = iterator_to_array($res)) === 9
&& array_keys($arr) == range(8, 0, -1)
&& array_values($arr) == [0, 1, 1, 2, 3, 5, 8, 13, 21]
);
所以希望添加一些代码而不是!!! (三个感叹号)这样断言就会通过。