加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

除了Perl之外还有其他语言的默认变量吗?

发布时间:2020-12-15 23:22:35 所属栏目:大数据 来源:网络整理
导读:我最近了解了 Perl’s default variable $_ .关于主题的一篇好文章在这里 http://perlmaven.com/the-default-variable-of-perl.我发现能够将函数应用到它而不指定令人着迷的参数.还有其他类似设施的编程语言吗? 编辑: 评论中列出的一些语言是: Powershell
我最近了解了 Perl’s default variable $_.关于主题的一篇好文章在这里 http://perlmaven.com/the-default-variable-of-perl.我发现能够将函数应用到它而不指定令人着迷的参数.还有其他类似设施的编程语言吗?

编辑:
评论中列出的一些语言是:

Powershell – 应该与Perl非常相似.

Groovy – 具有泛型iterator变量.

Scala – 将_变量作为通用lambda参数.

Lisp – 具有照应宏.

HyperTalk和AppleScript – 请参阅@AmbroseChapel answer

解决方法

我建议而不是寻找一个“默认”变量,而是根据隐式变量来考虑它.那些更为常见.

如果你看一下例如,在awk sed grep等等 – 他们将魔法应用于’当前行’.

例如.

sed -e 's/fish/paste/g' myfile

将隐式迭代myfile,并在每行应用一次模式.

我认为这是perl中出现的 – 因为perl让你模仿sed:

perl -p -e 's/fish/paste/g' myfile

如果你解析了这个,你把它变成:

LINE: while ( defined ( $_ = <ARGV> ) ) {
    s/fish/paste/g;
} 
continue { 
    die "-p destination: $!n" unless print $!;
}

Perl只是更多……明确它的隐含性.我的意思是,一旦你开始在while循环中’设置’一个隐式变量,那么从那里开始在for循环中这样做是有意义的.

我会敦促谨慎 – 我喜欢$_但我不喜欢写它 – 我觉得如果我真的是,那么我通常会更好地命名一个变量.

与编程一样 – 尤其是perl – 可读性和清晰度是最重要的.

我认为能够写作;

my $regex = qr/some_pattern/;

 while ( <STDIN> ) {
    print if m/$regex/;
 }

更清楚:

while ( my $line = <STDIN> ) { 
    if ( $line =~ m/some_pattern/ ) { 
        print $line;
     }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读