在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
当前回答
我为客户端编写了一种编程语言(用于实验驱动定制硬件),其中包含一些定制类型(Curl, Circuit,…),每种类型只有2个值。它们可以隐式地转换为布尔值,但是(在客户机的请求下)可以在运行时更改此类类型常量的确切布尔值。
例如: Curl类型有2个可能的值:CW和CCW(顺时针和逆时针)。在运行时,你可以通过一个简单的赋值语句改变布尔值:
ccw := true
所以你可以改变所有这些类型值的布尔值。
其他回答
回想起来,FORTRAN的计算goto是相当奇怪的。维基百科告诉我一些基础知识胜过它。
另一个著名的最爱是Algol 60的名称参数调用传递。
我想说的是,Python的空白是我最棒的WTF特性。的确,你或多或少会在一段时间后习惯它,而且现代编辑器使它更容易处理,但即使在过去一年里我几乎全职从事python开发,我仍然相信这是一个坏主意。我已经阅读了所有背后的原因,但说实话,它妨碍了我的工作效率。差不了太多,但鞍下还是有毛刺。
编辑:从评论来看,有些人似乎认为我不喜欢缩进我的代码。这是一个不正确的评估。无论使用什么语言,无论是否被迫,我总是将代码缩进。我不喜欢的是,缩进定义了一行代码所在的块。我更喜欢使用显式分隔符。除其他原因外,我发现显式分隔符更容易剪切和粘贴代码。
例如,如果我有一个缩进4个空格的块,并将它粘贴到一个缩进8个空格的块的末尾,我的编辑器(所有编辑器?)不知道粘贴的代码是属于8个空格的块还是外部块。OTOH,如果我有显式分隔符,很明显,代码属于哪个块以及它应该如何(重新)缩进——它通过智能地寻找块分隔符来做到这一点。
编辑2:一些提供评论的人似乎认为这是一个我讨厌的功能,或者我认为这使得python成为一种糟糕的语言。同样,这不是真的。虽然我不太喜欢它,但这不是重点。这个问题是关于最奇怪的语言特征,我认为这很奇怪,因为它是非常非常少(但是>0)语言使用的东西。
在Forth中,任何不包含空格的东西都可以是标识符(包含空格的东西需要做一些工作)。解析器首先检查事物是否定义了,在这种情况下,它被称为单词,如果没有,则检查它是否为数字。没有关键字。
无论如何,这意味着人们可以重新定义一个数字来表示其他东西:
: 0 1 ;
它创建了单词0,由1组成,不管它在执行时是什么。反过来,它会导致以下结果:
0 0 + .
2 Ok
另一方面,定义可以接管解析器本身——这是可以做到的 通过评论词。这意味着Forth程序实际上可以在中途变成一个完全不同语言的程序。事实上,这是Forth推荐的编程方式:首先你写你想要解决问题的语言,然后你解决问题。
Objective-C对字符串@的使用。示例:@"这是一个字符串。"
在Java中:
int[] numbers() {
return null;
}
可以写成:
int numbers() [] {
return null;
}