gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:59:10 26 4
gpt4 key购买 nike

我最近了解到Perl's default variable $_ .一篇关于主题的好文章在这里http://perlmaven.com/the-default-variable-of-perl .我发现在不指定参数的情况下对其应用函数的能力很吸引人。是否有其他具有类似功能的编程语言?

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

Powershell - 应该与 Perl 非常相似。

Groovy - 具有通用性 it迭代器变量。

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;
}
}

关于perl - 除了带有默认变量的 Perl 之外,还有其他语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31583150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com