我做一個分配編譯帕斯卡爾的一個子集,並在最初的方案還有的像這樣的代碼行:爲什麼下面的代碼返回True?
if x.tp == y.tp in {Bool, Int}:
some other code ...
這讓我真的很困惑,x.tp == y.tp
返回一個布爾值True
或False
,因此True/False in {Bool, Int}
將始終返回False
。
的Bool
和Int
的定義如下:
class Int: pass
class Bool: pass
然後,我將在該行斷點,並在VSCode的調試器玩耍:
>> x.tp
<class 'ST.Int'>
>> y.tp
<class 'ST.Int'>
>> x.tp == y.tp
True
>> a = (x.tp == y.tp)
None
>> a
True
>> a in {Bool, Int}
False
>> x.tp == y.tp in {Bool, Int}
True <----------------------- why does it return True?
爲什麼x.tp == y.tp in {Bool, Int}
回報True
這裏?
什麼是'x.tp'和'y.tp'? –
@ JimFasarakis-Hilliard'x.tp'和'y.tp'都是這兩種類型。我不確定是否應該發佈更多的代碼,因爲它太長 –