[英]What is the difference between = and ==?
=
和==
什么區別? 我發現雙等號允許我的腳本運行而一個等號產生錯誤消息的情況。 我什么時候應該使用==
而不是=
?
關於=
含義取決於上下文。 ==
總是用於測試相等性。
=
可以
在大多數情況下用作<-
替代品,賦值運算符。
> x = 10 > x [1] 10
用作鍵值對的分隔符,用於在函數調用中為參數賦值。
rnorm(n = 10, mean = 5, sd = 2)
由於上面的 2., =
不能在所有情況下用作<-
替代品。 考慮
> rnorm(N <- 10, mean = 5, sd = 2)
[1] 4.893132 4.572640 3.801045 3.646863 4.522483 4.881694 6.710255 6.314024
[9] 2.268258 9.387091
> rnorm(N = 10, mean = 5, sd = 2)
Error in rnorm(N = 10, mean = 5, sd = 2) : unused argument (N = 10)
> N
[1] 10
現在有些人會認為rnorm(N <- 10, mean = 5, sd = 2)
編程很差,但它是有效的,您需要注意=
和<-
之間的差異進行賦值。
==
總是用於相等性測試:
> set.seed(10)
> logi <- sample(c(TRUE, FALSE), 10, replace = TRUE)
> logi
[1] FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE
> logi == TRUE
[1] FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE
> seq.int(1, 10) == 5L
[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
但是,請注意==
,因為它實際上意味着完全等於並且在涉及浮點運算的計算機上您可能無法得到您期望的答案。 例如,從?'=='
:
> x1 <- 0.5 - 0.3
> x2 <- 0.3 - 0.1
> x1 == x2 # FALSE on most machines
[1] FALSE
> identical(all.equal(x1, x2), TRUE) # TRUE everywhere
[1] TRUE
其中all.equal()
測試相等性,允許由於精度/浮點運算的損失而產生一些模糊性。
=
基本上是賦值 ( <-
) 的同義詞,但最常用於將值傳遞給函數。
==
是對相等性的測試
用最簡單的術語來說,以這兩行代碼為例:
1) x = 10
2) x == 10
第一行 (x = 10) 表示“我命令 x 等於 10。”
第二行 (x == 10) 表示“我在問這個問題,x 是否等於 10?”
如果你先寫“x == 10”,它會給你一條錯誤信息並告訴你沒有找到x。
如果你寫“x = 10”,這會將 x 存儲為 10。
在你寫出“x = 10”之后,如果你寫出“x == 10”,它會響應“TRUE”,就像“是的,x 確實等於 10,因為你讓 x 等於 10”。 但是如果你寫“x == 11”或“x == 12”或x == 10之外的任何東西,那么它會回應“FALSE”,如“不,x不等於11或12或10以外的任何東西,因為你讓 x 等於 10。”
例子:
$test = 1;
if($test=2){
echo "Hello";
}
if($test==2){
echo "world";
}
//The result is Hello because = is assigning the value to $test and the second condition is false because it check the equality of $test to the value 2.
我希望這將有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.