Tôi đang cố gắng dịch một kịch bản Perl sang PHP và tôi đang gặp sự cố với một số thứ Perl. Ví dụ: @_ -1
có nghĩa là gì? Và làm thế nào để tôi viết nó trong PHP?@_ -1 có nghĩa là gì trong Perl?
Toàn bộ chức năng như sau:
sub variance {
my $sum = sum_squares (@_);
my $deg = @_ - 1;
return $sum/$deg;
}
Ok, tất cả các chương trình con như sau:
sub mean { # mean of values in an array
my $sum = 0 ;
foreach my $x (@_) {
$sum += $x ;
}
return $sum/@_ ;
}
sub sum_squares { # sum of square differences from the mean
my $mean = mean (@_) ;
my $sum_squares = 0 ;
foreach my $x (@_) {
$sum_squares += ($x - $mean) ** 2 ;
}
return $sum_squares ;
}
sub variance { # variance of values in an array
my $sum_squares = sum_squares (@_) ;
my $deg_freedom = @_ - 1 ;
return $sum_squares/$deg_freedom ;
}
sub median { # median of values in an array
my @sorted = sort {$a <=> $b} (@_) ;
if (1 == @sorted % 2) # Odd number of elements
{return $sorted[($#sorted)/2]}
else # Even number of elements
{return ($sorted[($#sorted-1)/2]+$sorted[($#sorted+1)/2])/2}
}
sub histogram { # Counts of elements in an array
my %histogram =() ;
foreach my $value (@_) {$histogram{$value}++}
return (%histogram) ;
}
hãy chịu với tôi bởi vì lần đầu tiên tôi với Perl. Từ những gì tôi đã nhìn thấy (thử nghiệm), câu trả lời đúng trong trường hợp này là một trong những David Dorward. Tôi có một câu hỏi khác liên quan đến tập hợp các chương trình con này là here.
'$ # _ == @_ - 1' – ephemient
Bằng nhau nhưng không tương đương. Đó là khôn ngoan để viết một trong những bạn có nghĩa là. Nếu bạn có nghĩa là "một ít hơn số thứ trong' @ _' "viết' @_ - 1'. Nếu bạn có nghĩa là "chỉ mục cuối cùng trong' @ _' "viết' $ # _ '. – hobbs
(Về mặt kỹ thuật, nếu bạn sử dụng '$ [' không được chấp nhận và triệt để tà ác, cả hai có thể không bằng nhau. Nhưng đừng làm vậy.) – hobbs