回答
在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”'代替。 –