После обсуждения выше, недавно я узнал, что при разработке языка программирования y термин «передача по ссылке» довольно строг, и, например, в java фактически это просто передача по значению, строго.
Либо вы передаете примитив по значению (понятно всем, кого я предполагал), либо передаете ссылку на объект по значению. Хорошо, я теперь понимаю, но рассмотрим следующий код на Perl.
sub addFoo {
my ($arrayRef) = @_;
push @{$arrayRef},"foo";
}
my @array = (1,2,3);
my $arrayRef; # FUTURE reference (equivalent to pointer C) to @array.
addFoo($arrayref = \@array); #1.
addFoo(\@array); #2.
addFoo($arrayRef); #3.
print join(" ",@array),"\n"; # result "1 2 3 foo foo foo\n";
Мой вопрос, если какой из трех альтернативных вызовов addFoo считается передачей по ссылке, а не передачей по ссылке? Кажется, что ответ номер три ясен, но я не могу сказать номер 1. # 2. как делают точно так же. По крайней мере, число 2 явно рассматривается как переход по ссылке на некоторых страницах man perl и веб-сайтах.