在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?
请每个回答只回答一个特征。
当前回答
在JavaScript中:
'5' + 3 gives '53'
而
'5' - 3 gives 2
其他回答
在Haskell:
let 2 + 2 = 5 in 2 + 2
收益率5。
在统一中,
GameObject.Find("MyObject")
将正常返回对象。然而,如果你这样做:
GameObject.Find("MyObject").active = false;
//do other stuff
if (GameObject.Find("MyObject").active)
{
//do stuff
}
然后您将得到一个空引用。在Unity iPhone中,这段代码通常在编辑器中正常工作,但在iPhone上运行时会导致SIGBUS。问题是GameObject.Find()将只定位活动对象,所以即使你只是检查它是否活动,你也会有效地调用if (null.active)。
为了使它正常工作,你必须在使它不活跃之前存储它。
GameObject obj = GameObject.Find("MyObject");
obj.active = false;
//do other stuff
if (obj.active)
{
//do stuff
}
可以说,这是一种更好的实践,但Unity处理非活动对象的方式通常是相当奇怪的。它似乎卸载了大部分非活动对象(纹理等),但不是全部,因此非活动对象仍然会消耗大量内存。
红宝石拖鞋。条件语句中的"…"和".."并不总是范围操作符:
(0..20).each do |x|
if ((x%10) == 5)..((x%10) == 5)
print "#{x} "
end
end
(0..20).each do |x|
if ((x%10) == 5)...((x%10) == 5)
print "#{x} "
end
end
这将输出:
5 15
5 6 7 8 9 10 11 12 13 14 15
. .检查每一遍的两个语句,…每次只检查“on”或“off”语句(取决于触发器状态)。它们是从awk和sed偷来的。
Matz在“Ruby编程语言”中写道:“人字拖是Ruby中一个相当晦涩的特性,可能最好避免……”
对于那些不知道的人来说,PostScript实际上是一种编程语言。我已经有点疯狂了——我写了一个PostScript程序,计算曼德尔布罗特分形的细节非常高。它真的是可打印的PostScript,尽管它会崩溃很多打印驱动程序…
总之,从哪里开始PostScript…这里有一个例子:您实际上可以创建一个标识符为....的变量什么都没有。
() cvn 5 def %将数字5分配给…没有什么
PostScript是一种基于堆栈的语言。()将一个空字符串放入堆栈。cvn将其转换为一个名称(如果打印它,则为“/”,因为PS中的所有名称前面都有斜杠)。然后5def将值5赋给它。(%是注释字符)
你不能直接把它拿回来,例如,如果我说“/ print”,这将不会打印数字5。但你可以间接地把它拿回来:
() CVN负载打印%这将打印数字5
还有什么……PostScript将字典作为原生类型,您可以使用数组引用作为字典的键…但是REFERENCE才是键,而不是数组。所以:
/myDict 100 dict def
[0] dup myDict exch 42 put myDict exch get == %打印42
myDict [1] 42 put myDict [1] get %抛出未定义错误
编辑:哦,是的,还有一件有趣的事情……在Ghostscript提示下尝试以下操作:
1 array dup dup 0 exch put ==
分析!
早期的FORTRAN,空格不重要。(anti-Python !)
DO 20 I = 1, 10
含义:从这里循环到第20行,I从1到10。
DO 20 I = 1. 10
含义:将1.10分配给名为DO20I的变量。
有传言说这个漏洞毁了一个太空探测器。