回答
在le AST第一個表達式不進入我如果
這裏是我的解釋:
!
具有更高的優先級,然後==
。因此,在表達式!x == "string"
將在內部表示爲(!x) == "string"
!x
要麼將被evaluted到true
或false
,分別TrueClass
或FalseClass
對象。現在我們來看看true
和false
對象使用哪個方法的#==
方法。
true.method(:==).owner
# => BasicObject
false.method(:==).owner
# => BasicObject
Basic#==
:平等 - 在對象級別,==返回true僅如果obj等是同一個對象。
根據上述定義,您的代碼!x == "string"
應始終評估爲false
。
downvote的不是我的 –
@JanDvorak Opps !!對不起..打擾你然後.. :))請不要介意..讓我,如果有任何進一步的改善是需要這個答案。 –
是一個很長的答案,我會標記這個,不想讓我的錯誤來懲罰你。 – juanpastas
比方說,x是 「富」
!x == "string"
擴大到
false == "string"
這是你的第二個例子,這是擴展到完全不同的:
"foo" != "string"
可能值得注意的是,這是因爲'!x ==「字符串」'等效於'(!x)==「字符串」'而不是'!(x ==「string」)'。 –
@AndrewMarshall你是對的... –
你認爲「不是x」是什麼?它會等於「字符串」還是任何字符串?
這完全是一個完全不同的陳述。
您提到了一個if語句,所以這必須是您用於邏輯語句的條件。既然x不會等於一個字符串,那麼if語句的條件將始終爲假。
- 1. 字符串比較等效
- 2. 邏輯比較運算符
- 3. 比較邏輯
- 4. 在Java中與邏輯運算符進行字符串比較
- 5. 在IF語句中比較字符串與邏輯運算符
- 6. 我可以在字符串中存儲邏輯比較嗎?
- 7. Ruby邏輯字符串比較(例如「a」>「b」)
- 8. 比較Python中兩個字符串的邏輯錯誤
- 9. 比較字符串時的底層邏輯是什麼?
- 10. 比較字符串的長度相等
- 11. 比較等於字符串返回False?
- 12. 等於字符串比較返回false
- 13. 比較字符串在KSH平等
- 14. 比較等於星號的字符串
- 15. python-字符串相等和ord()比較?
- 16. 比較字符串顯示不等於
- 17. 覆蓋等於和比較字符串
- 18. 比較字符串是否相等
- 19. 長邏輯運算符比較
- 20. 邏輯比較==運算符過載
- 21. 在Python中的字符串等效/比較
- 22. 字符串比較似乎無效
- 23. 高效的字符串比較
- 24. 如何字符串比較短的字符串字面有效
- 25. 文件比較的邏輯
- 26. 視圖的邏輯比較
- 27. 比較邏輯條件
- 28. 鏈式邏輯或比較
- 29. 邏輯和uint8比較
- 30. 字符/字符串比較
你認爲'!x ==「string」'做什麼?提示:運算符優先級 –
我假設你想'if!(x ==「string」)'。考慮使用'除非x ==「string」'代替。 –