在你看来,你遇到过的最令人惊讶、最怪异、最奇怪或最“WTF”的语言特性是什么?

请每个回答只回答一个特征。


当前回答

其余的这些都没有令人震惊的Ruby触发器操作符:

p = proc {|a,b| a..b ? "yes" : "no" }

p[false,false]    => "no"
p[true,false]     => "yes"
p[false,false]    => "yes"   # ???
p[false,true]     => "yes"
p[false,false]    => "no"

是的,程序状态存储在解释器的解析树中。这就是为什么开发一个兼容的Ruby实现要花很长时间的原因。但是我原谅你,Ruby

其他回答

在Java中

String("aaa")==String("aaa") //false
//you need to use
String("aaa").equals(String("aaa")) // true

Fortran中不同列的特殊含义。(如果你从小就有穿孔卡片,这可能是很自然的。)

这样做的一个副作用是,例如变量名在第72列之后被截断。结合隐式NONE,当这样的变量名在第72列附近开始时,它会无声地引入一个新变量。

你需要

要知道这一点 以不同的方式高亮显示注释部分(第72列之后)的编辑器 颜色比之前的部分…

在ColdFusion中,文本值自动转换为各种数据类型,用于各种目的。我遇到了一个奇怪的问题,“00A”和“000”被返回为相等。事实证明,ColdFusion将“00A”解释为时间,转换为某种数字时间格式,并将其转换为0。“000”被转换为0。所以它们都被认为是相等的。那时我学习了字符串的比较函数。

在Java中,字符串如何处理==操作符取决于它是如何构造的,这存在一些不一致性。

String a = "Hello";
String b = "Hello";
System.out.println(a == b ); // prints true.
String c = new String("Hello");
String d = new String("Hello"); 
System.out.println(c == d ); // prints false

在Ruby中…

i=true
while(i)
   i=false
   a=2
end
puts defined?(a) // returns true