这是输出false
而不是true
。这是为什么?
class Main {
function void main() {
var String foo;
let foo = "bar";
if (foo = "bar") {
do Output.printString("true");
}
else {
do Output.printString("false");
}
return;
}
}
我怀疑这是因为foo
和"bar"
都是对象,而=
测试每个对象的起始地址是否相同(杰克中的note that,相等用单个等于而不是双等或三等于测试。我还没有完成第10/11章,这时我会发现这个假设是否属实。
答案 0 :(得分:1)
对于迟到的回答感到抱歉,但是来了。您的程序将在堆上动态创建一个字符串,用于每次出现" bar"并且您的代码将比较堆上的两个不同地址。比较将是错误的。
我怎么知道?我刚刚写完编译器......