Language agnostic 是否有任何语言可以;A==B==C";在A、B和C都是非布尔类型的情况下工作?

Language agnostic 是否有任何语言可以;A==B==C";在A、B和C都是非布尔类型的情况下工作?,language-agnostic,type-conversion,Language Agnostic,Type Conversion,我没有用C#思考,试图比较三个对象。它失败了,并解释了为什么[因为(typeof(“A==B”)==bool)和(typeof(C)!=bool)这是一个无效的比较]。有任何语言支持这样的短路逻辑吗?有几种语言允许您执行这样的多个条件语句。 但我首先想到的是Python 例如: a = 5 b = 5 c = 5 if(a == b == c): print "yes" else: print "no" 将在控制台中打印“是” 它也适用于其他类型,如下所示: a = ["A",

我没有用C#思考,试图比较三个对象。它失败了,并解释了为什么[因为(typeof(“A==B”)==bool)和(typeof(C)!=bool)这是一个无效的比较]。有任何语言支持这样的短路逻辑吗?

有几种语言允许您执行这样的多个条件语句。 但我首先想到的是Python

例如:

a = 5
b = 5
c = 5
if(a == b == c):
    print "yes"
else:
    print "no"
将在控制台中打印“是”

它也适用于其他类型,如下所示:

a = ["A",1]
b = ["A",1]
c = ["A",1]
d = ["A",1]
if(a == b == c == d):
    print "YES"
else:
    print "NO"

现在C#(和其他类似C的语言)不支持这一点的原因是,它们将比较表达式计算为真/假,因此编译器在执行(5==5==5)时看到的是((5==5)==5),这会产生:(true==5)这是无效的,因为无法将布尔值与整数进行比较,所以实际上可以编写(a==b==C)如果c是一个布尔值,那么(5==5==true)就可以了。

这绝对是一个好奇的问题。我不会用其他语言重写我的程序,这样我就不必键入If(A==B&&B==C)。:)@cheniel在本例中,我比较int值,因此A==B&&B==C意味着,尽管我认为对于具有复杂等式测试的类型,A==C可能是一件好事情;B=[1,2,3];C=正确;打印A、B和C<代码>真。这是什么意思?