Julia数组与向量中==和===运算符的差异及疑问解析
问题解析
1. 类型判断结果均为true的原因
在Julia中,Vector是一维Array的别名,Vector{T}等价于Array{T, 1}。你通过Array([1,2,3])和Vector([1,2,3])创建的两个变量,它们的类型都是Vector{Int64}(即Array{Int64, 1})。
由于类型本身在Julia内存中是唯一的对象,无论是用==(值相等判断)还是===(恒等判断)比较两者的类型,结果都会是true。
2. a == v与a === v结果不同的原因
Julia的两个相等运算符有着明确的分工:
==:值相等判断:它会校验两个对象的内容是否等价。对于数组而言,就是对比数组的维度、每个位置的元素是否完全一致。你的a和v都是包含相同Int64元素的一维数组,内容完全匹配,因此a == v返回true。===:恒等判断:它会检查两个对象是否是内存中的同一个实例。你两次调用构造函数,会在内存中生成两个独立的数组对象——它们内容相同,但占据不同的内存空间,所以a === v返回false。
打个比方,这就像你复制了一份内容完全相同的文档,两份文档内容一致,但它们是两个独立的文件,而非同一个文件本身。
内容的提问来源于stack exchange,提问作者Palmerim Soares de Sá
相关产品推荐
相关产品推荐

