1 回答

TA貢獻1818條經驗 獲得超8個贊
“我選擇了 shift 方法(),因為它刪除了數組的第一個元素?!?/p>
...當然,但是$coders = ['Paul', 'John', 'Brad'];在您的“random()”函數中,每次都使用原始值重新創建數組。您使用 shift() 所做的更改不會在對“random()”的調用之間保留。即使您刪除了它,每次調用$killer->random($coders);它時也會傳入原始數組。
您需要$coders在類級別定義為(私有)屬性,因此它的值在調用 random() 函數之間保持不變。無需在 random() 函數中聲明 $coders,也無需將副本作為參數傳遞給函數。
像這樣的東西:
class Killer {
private $coders = ['Paul', 'John', 'Brad'];
public function random() {
shuffle($this->coders);
$pickedCoder = array_shift($this->coders);
return $pickedCoder;
}
}
接著:
public function testCoderNotKilledTwice()
{
$killer = new Killer();
$deadCoder1 = $killer->random();
$deadCoder2 = $killer->random();
$this->assertNotEquals($deadCoder1, $deadCoder2);
}
當然請記住,您可能還需要考慮數組中不再有足夠的項目來返回值的情況。我不知道您希望能夠成功運行 random() 函數多少次。
- 1 回答
- 0 關注
- 136 瀏覽
添加回答
舉報