5

是否有等效于 Perl 的$_功能?我正在用 C# 重写一些旧的 perl 脚本,但我从未学过任何 perl。这是我想要弄清楚的一个例子

sub copyText {
        while($_[0]){
            $_[1]->Empty();
            $_[0] = $_[1]->IsText();
            sleep(1);
         }
4

2 回答 2

11

首先,$_不是函数。它只是一个普通变量(恰好被许多内置函数读取和更改)。

其次,您发布的代码不使用$_. @_它正在访问参数列表的元素。

您发布的代码的更具可读性的版本是:

sub copyText {
   my ($arg1, $arg2) = @_;
   while ($arg1) {
      $arg2->Empty();
      $arg1 = $arg2->IsText();
      sleep(1);
   }

   $_[0] = $arg1;   # arg1 is passed by reference
}
  • arg1 是通过引用传递的布尔值。
  • arg2 是某种对象,它有一个名为Empty和一个名为的方法IsText

抱歉,我不懂 C#,但希望你能继续前进。

于 2012-11-15T20:06:45.310 回答
0

Perl的$_功能

这不是一个函数。这是一个代词,意思是“它”。

还有另一个特殊变量@_,它是一个代词,意思是“他们”。

C# 中没有类似物。

于 2012-11-15T22:54:20.750 回答