除了Perl,还有其他语言使用默认变量吗?
我最近了解到。这里有一篇关于这个主题的好文章。我发现在不指定参数的情况下对其应用函数的能力非常吸引人。是否有其他具有类似功能的编程语言 编辑: 评论中列出的一些语言包括: Powershell-应该非常类似于Perl Groovy-具有泛型除了Perl,还有其他语言使用默认变量吗?,perl,Perl,我最近了解到。这里有一篇关于这个主题的好文章。我发现在不指定参数的情况下对其应用函数的能力非常吸引人。是否有其他具有类似功能的编程语言 编辑: 评论中列出的一些语言包括: Powershell-应该非常类似于Perl Groovy-具有泛型ititerator变量 Scala-将\uuu变量作为通用lambda参数 Lisp-具有回指宏 HyalTalk和Apple Script——见@ Ab溴SeCele[/P>>P>我建议不要寻找“默认”变量,而是考虑隐式变量。这些情况比较普遍 例如,在aw
it
iterator变量
Scala-将\uuu
变量作为通用lambda参数
Lisp-具有回指宏
HyalTalk和Apple Script——见@ Ab溴SeCele[/P>>P>我建议不要寻找“默认”变量,而是考虑隐式变量。这些情况比较普遍
例如,在awk
sed
grep
等处,它们将其魔力应用于“当前行”
例如
将隐式迭代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 $!;
}
这比:
while ( my $line = <STDIN> ) {
if ( $line =~ m/some_pattern/ ) {
print $line;
}
}
while(my$line=){
如果($line=~m/some_pattern/){
打印$行;
}
}
例如,Scala有类似$的东西
List(1,2,3)map(+2)我所知道的唯一一个是HyperTalk,这是一种用于苹果稍有不寻常的开发环境HyperCard的语言,它将
it
作为默认或隐式变量。你可以这样做
get the length of <something>
put it into myVariable
获取
把它放到myVariable中
这种编程也可以在AppleScript中完成,请参见。您应该在esolang.org上查找,尤其是在笑话语言中。感谢您的推荐,我会在那里查找,但我希望找到一些实用的东西。事实并非如此,但在某些语言中,方法调用invocant默认为当前正在执行的方法的invocant(“this”、“self”)。在Lisp中有回指宏。这会让人觉得讽刺,但不是:English。拉里·沃尔是语言学家。所以当你说“你有电话吗?我能借用一下吗?”或“你认识戴夫吗?你见过他吗?”时,你使用的是默认变量,称为代词。Larry特意为Perl选择了类似自然语言的结构。谢谢,现在我知道隐式变量的起源了。你知道有哪种新的语言借用了Perl或awk/sed/grep的思想吗?我没有遇到过。但我认为这在很大程度上是因为较新的语言试图“不是perl”:)。但在某种程度上,您确实可以使用
$i
或i
作为“通用迭代器”。它不是内置在语言中的,但它是一种相当常见的编程习惯。有些人可能也会说这是一个坏习惯。哪些语言有这样的泛型迭代器?我只知道Groovy有it
泛型迭代变量。Powershell在隐式迭代中很好地利用了$变量(管道等)。
while ( my $line = <STDIN> ) {
if ( $line =~ m/some_pattern/ ) {
print $line;
}
}
get the length of <something>
put it into myVariable