我构建了一个具有以下结构的 ListNode:
class MyNode {
private $weight;
private $children;
private $t1;
private $t2;
private $t3;
***
more variables
***
function __constructr($weight, $t1, $t2, $t3, $children = array()) {
$this->weight = $weight;
$this->children = $children;
$this->t1 = $t1;
$this->t2 = $t2;
$this->t3 = $t3;
}
现在我创建了 5 个数据相同但权重不同的节点。
$n1 = new MyNode(25, 't_1', 't_2', 't_3');
$n2 = new MyNode(30, 't_1', 't_2', 't_3');
$n3 = new MyNode(49, 't_1', 't_2', 't_3');
$n4 = new MyNode(16, 't_1', 't_2', 't_3');
$n5 = new MyNode(62, 't_1', 't_2', 't_3');
请注意,t1、t2 和 t3 可以不同,但对于这 5 个节点,它们是相同的。我不想做上面的事情,而是想使用某种克隆功能来做以下事情
$n1 = new MyNode(25, 't_1', 't_2', 't_3');
$n2 = $n1->clone(array('weight' => 30));
$n3 = $n2->clone(array('weight' => 49));
$n4 = $n4->clone(array('weight' => 16));
$n5 = $n5->clone(array('weight' => 62));
克隆函数采用键数组作为 MyNode 中我想要更改的变量名称及其值。所以array('weight' => 30)应该改变$this->weight = 30; 我坚持从数组访问变量。它应该创建一个所有值与其当前节点相同的新节点,但只修改数组中的值。
function clone($changeVariables) {
-----
}