作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Julia 仍然完全陌生,并且对以下行为非常恼火:
immutable X
x::ASCIIString
end
"Foo" == "Foo"
true
X("Foo") == X("Foo")
false
immutable Y
y::Int
end
3 == 3
true
Y(3) == Y(3)
true
X("Foo") == X("Foo")
是真实的。谁能澄清为什么不是?
最佳答案
Julia 有两种类型的相等比较:
is(x,y)
函数,进行此类比较的等效运算符是 ===
运算符(operator)。棘手的部分是如果两个可变对象的内存地址相同,则它们是相等的,但是当您比较两个不可变对象(immutable对象)时 is
如果内容在位级别相同,则返回 true。 2 === 2 #=> true, because numbers are immutable
"Foo" === "Foo" #=> false
==
运算符或等效的 isequal(x,y)
如果首先存在适合此类参数的方法,然后该方法返回true,则称为泛型比较并返回true的函数。那么如果没有列出该方法怎么办?然后 ==
调用===
运算符(operator)。 ==
运营商,所以你真的调用
===
运算符,它检查两个对象在位级别的内容是否相同,而不是因为它们引用不同的字符串对象和
"Foo" !== "Foo"
"test"!=="true" #=> true
?如果您查看 String 数据类型的结构,例如
xdump("test") #=> ASCIIString data: Array(UInt8,(4,)) UInt8[0x74,0x65,0x73,0x74]
,您会发现字符串是具有重要
data
的复合数据类型。 field 。 Julia 字符串主要是存储在
data
中的字节序列。 String 类型的字段。和
isimmutable("test".data) #=> false
关于hash - Julia:不可变的复合类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33070366/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!