PHP では、以下の最初のコード スニペットに見られるように、変数の を別の変数&
に割り当てるために使用できます。reference
より多くのコンテキストについては、PHPの「参照を返す」ドキュメントを参照してください... http://www.php.net/manual/en/language.references.return.php
PHP コード:
<?php
$tree = array();
$tree["branch"] = array();
$tree["branch"]["leaf"] = "green";
echo '$tree: ';
var_dump($tree);
$branch = &$tree["branch"];
$branch = "total replacement!";
echo '$tree: ';
var_dump($tree);
?>
PHP の出力:
$tree: array(1) {
["branch"]=>
array(1) {
["leaf"]=>
string(5) "green"
}
}
$tree: array(1) {
["branch"]=>
&string(18) "total replacement!"
}
私がやったRubyでこれをやろうとしている:
tree = {}
tree["branch"] = {}
tree["branch"]["leaf"] = "green"
puts "tree: #{tree.inspect}"
branch = tree["branch"]
branch = "total replacement!"
puts "tree: #{tree.inspect}"
どの出力:
tree: {"branch"=>{"leaf"=>"green"}}
tree: {"branch"=>{"leaf"=>"green"}}
さて、この単純な代入は Ruby では機能しませんが、オブジェクトの変更は機能します:
Ruby コード (続き):
branch["lead"] = "red"
puts "tree: #{tree.inspect}"
ルビーの出力:
tree: {"branch"=>{"leaf"=>"red"}}
だから、オブジェクトの「親」を見つけて、私が行ったように変更できるようにする方法があるかどうか疑問に思っていますbranch["leaf"]
。
著者の編集:
代入によって他の変数へのハッシュ参照を変更することはできませんが(例: x = y
)、そのメソッドを使用して既存のオブジェクトを変更することはできます。このアプローチを使用すると、以下に示すように、変数に newを擬似的に割り当てることができます...hash
branch
.replace()
割り当てではなく置換:
tree = {}
tree["branch"] = {}
tree["branch"]["leaf"] = "green"
puts "tree: #{tree.inspect}"
branch = tree["branch"]
branch.replace({"leaf" => "red", "twig" => "brown"})
puts "tree: #{tree.inspect}"
出力:
tree: {"branch"=>{"leaf"=>"green"}}
tree: {"branch"=>{"leaf"=>"red", "twig"=>"brown"}}