Perlの$_
関数に相当するものはありますか?私はC#でいくつかの古いperlスクリプトを書き直しています。私はPerlを学んだことはありません。 HERESに私はすべての
sub copyText {
while($_[0]){
$_[1]->Empty();
$_[0] = $_[1]->IsText();
sleep(1);
}
Perlの$_
関数に相当するものはありますか?私はC#でいくつかの古いperlスクリプトを書き直しています。私はPerlを学んだことはありません。 HERESに私はすべての
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の
$_
機能
それは機能しません。それは「それ」を意味する代名詞です。
もう1つの特別な変数@_
があります。これは「それら」を意味する代名詞です。
C#にはアナログがありません。
これに対応して、$ _ [0]はそれらの0番目のインデックスを意味します。スカラー(@ _)はそれらの数などを返します。 – singingfish
C#は知っているがperlは知っている人のために、 '$ _'は何をしているのか教えていただけますか?または、あなたがしようとしていることを説明してください。ある言語から別の言語へ厳密に変換すると、最良の結果が得られない場合があります。ハンマーでねじを使う方法を尋ねるようなものかもしれません。 – cadrell0
@ cadrell0、 '$ _'は上記では使用されていません。 '$ _ [0]'と '$ _ [1]'は配列 '@ _ 'の最初と2番目の要素です。 '@ _'はサブに渡される引数のリストです。 '@ _ 'の要素は、コピー(値渡し)ではなく、実際のargs(参照渡し)にエイリアスされます。 – ikegami
@ikegamiこれは私がperlを使わない理由です:)。 '$ _ [0]'は配列 '@ _ 'を参照していますか?またはOPのコードが間違っていますか? – cadrell0