Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
除了Perl,还有其他语言使用默认变量吗?_Perl - Fatal编程技术网

除了Perl,还有其他语言使用默认变量吗?

除了Perl,还有其他语言使用默认变量吗?,perl,Perl,我最近了解到。这里有一篇关于这个主题的好文章。我发现在不指定参数的情况下对其应用函数的能力非常吸引人。是否有其他具有类似功能的编程语言 编辑: 评论中列出的一些语言包括: Powershell-应该非常类似于Perl Groovy-具有泛型ititerator变量 Scala-将\uuu变量作为通用lambda参数 Lisp-具有回指宏 HyalTalk和Apple Script——见@ Ab溴SeCele[/P>>P>我建议不要寻找“默认”变量,而是考虑隐式变量。这些情况比较普遍 例如,在aw

我最近了解到。这里有一篇关于这个主题的好文章。我发现在不指定参数的情况下对其应用函数的能力非常吸引人。是否有其他具有类似功能的编程语言

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

Powershell-应该非常类似于Perl

Groovy-具有泛型
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