是否有與Perl的$_
函數等價的函數?我正在用C#重寫一些老的Perl腳本,我從來沒有學過Perl。繼承人的什麼,我試圖找出
sub copyText {
while($_[0]){
$_[1]->Empty();
$_[0] = $_[1]->IsText();
sleep(1);
}
是否有與Perl的$_
函數等價的函數?我正在用C#重寫一些老的Perl腳本,我從來沒有學過Perl。繼承人的什麼,我試圖找出
sub copyText {
while($_[0]){
$_[1]->Empty();
$_[0] = $_[1]->IsText();
sleep(1);
}
首先的一個例子,$_
是不是一個函數。這只是一個普通的變量(恰好被很多內建函數讀取和更改)。
其次,您發佈的代碼不使用$_
。它訪問參數列表@_
的元素。
您發佈將是代碼的更更可讀的版本:
sub copyText {
my ($arg1, $arg2) = @_;
while ($arg1) {
$arg2->Empty();
$arg1 = $arg2->IsText();
sleep(1);
}
$_[0] = $arg1; # arg1 is passed by reference
}
Empty
,另一個名爲IsText
。對不起,我不知道C#,但希望你可以繼續前進。
Perl的
$_
功能
這不是一個功能。這是一個代表「它」的代名詞。
還有另一個特殊變量@_
,它是一個代名詞,意思是「他們」。
C#中沒有模擬。
相應$ _ [0]表示它們的第0個索引。標量(@_)返回它們的計數等。 – singingfish
對於那些瞭解C#而不是Perl的人,你能告訴我們'$ _'的作用嗎?或者可以解釋你正在嘗試做什麼。從一種語言到另一種語言進行嚴格的轉換可能沒有最好的結果。這可能就像詢問如何用錘子使用螺釘一樣。 – cadrell0
@ cadrell0,上面沒有使用'$ _'。 '_ _ [0]'和'$ _ [1]'是數組「@ _」的第一個和第二個元素。 '@ _'是傳遞給子的參數列表。 '@ _'的元素別名爲實際參數(由ref傳遞),而不是副本(按值傳遞)。 – ikegami
@ikegami這就是爲什麼我不使用perl :)。 '$ _ [0]'引用數組''_''?或者是OP的代碼錯誤? – cadrell0