是否有任何语言 "A == B == C" 在 A、B 和 C 都是非布尔类型的情况下起作用?
Are there any languages where "A == B == C" works where A, B, and C are all non-boolean types?
我没有在 C# 中思考,而是尝试比较三个对象。它失败了,并解释了为什么 [因为 (typeof("A == B") == bool) 和 (typeof(C) != bool) 这是一个无效的比较]。有没有语言支持这样的短路逻辑?
有多种语言可以让您像这样进行多个条件判断。
但是我第一个想到的是Python
示例:
a = 5
b = 5
c = 5
if(a == b == c):
print "yes"
else:
print "no"
将在控制台中打印 "yes"。
它也适用于其他类型,例如:
a = ["A",1]
b = ["A",1]
c = ["A",1]
d = ["A",1]
if(a == b == c == d):
print "YES"
else:
print "NO"
现在 C#(和其他类似 C 的语言)不支持这一点的原因是它们将比较表达式计算为 true / false,所以当你这样做时你的编译器会看到什么(5 == 5 == 5) is ((5 == 5) == 5) 产生: (true == 5) 无效,因为你不能将布尔值与整数进行比较,你实际上可以写 (a == b == c) if c是一个布尔值,所以 (5 == 5 == true) 会起作用。
我没有在 C# 中思考,而是尝试比较三个对象。它失败了,并解释了为什么 [因为 (typeof("A == B") == bool) 和 (typeof(C) != bool) 这是一个无效的比较]。有没有语言支持这样的短路逻辑?
有多种语言可以让您像这样进行多个条件判断。 但是我第一个想到的是Python
示例:
a = 5
b = 5
c = 5
if(a == b == c):
print "yes"
else:
print "no"
将在控制台中打印 "yes"。
它也适用于其他类型,例如:
a = ["A",1]
b = ["A",1]
c = ["A",1]
d = ["A",1]
if(a == b == c == d):
print "YES"
else:
print "NO"
现在 C#(和其他类似 C 的语言)不支持这一点的原因是它们将比较表达式计算为 true / false,所以当你这样做时你的编译器会看到什么(5 == 5 == 5) is ((5 == 5) == 5) 产生: (true == 5) 无效,因为你不能将布尔值与整数进行比较,你实际上可以写 (a == b == c) if c是一个布尔值,所以 (5 == 5 == true) 会起作用。