1 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
“我選擇了 shift 方法(),因?yàn)樗鼊h除了數(shù)組的第一個(gè)元素?!?/p>
...當(dāng)然,但是$coders = ['Paul', 'John', 'Brad'];在您的“random()”函數(shù)中,每次都使用原始值重新創(chuàng)建數(shù)組。您使用 shift() 所做的更改不會(huì)在對“random()”的調(diào)用之間保留。即使您刪除了它,每次調(diào)用$killer->random($coders);它時(shí)也會(huì)傳入原始數(shù)組。
您需要$coders在類級(jí)別定義為(私有)屬性,因此它的值在調(diào)用 random() 函數(shù)之間保持不變。無需在 random() 函數(shù)中聲明 $coders,也無需將副本作為參數(shù)傳遞給函數(shù)。
像這樣的東西:
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);
}
當(dāng)然請記住,您可能還需要考慮數(shù)組中不再有足夠的項(xiàng)目來返回值的情況。我不知道您希望能夠成功運(yùn)行 random() 函數(shù)多少次。
- 1 回答
- 0 關(guān)注
- 147 瀏覽
添加回答
舉報(bào)