- Julia 1.0 Programming Complete Reference Guide
- Ivo Balbaert Adrian Salceanu
- 242字
- 2021-06-24 14:21:50
When are two values or objects equal or identical?
Whether two values are equal or not can be decided by the == operator, for example, 5 == 5 and 5 == 5.0 are both true. Equivalent to this operator is the isequal() function:
isequal(5, 5) #> true isequal(5, 5.0) #> true
Both the preceding statements return true, because objects such as numbers are immutable and they are compared at the bits level.
To see whether the two objects x and y are identical, they must be compared with the === operator. The result is a Bool value, true or false: x === y -> Bool, for example:
5 === 5 #> true
5 === 5.0 #> false
For objects that are more complex, such as strings, arrays, or objects that are constructed from composite types, the addresses in the memory are compared to check whether they point to the same memory location. For immutable object such as struct, this gets optimized so that instances with the same value point to the same object:
struct Vector3D
x::Float64
y::Float64
z::Float64
end
q = Vector3D(4.0, 3.14, 2.71)
r = Vector3D(4.0, 3.14, 2.71)
isequal(q, r) #> true
q === r #> true
However, if objects are mutable, they are different objects even if they have the same value, as follows:
mutable struct MVector3D
x::Float64
y::Float64
z::Float64
end
q = MVector3D(4.0, 3.14, 2.71)
r = MVector3D(4.0, 3.14, 2.71)
isequal(q, r) #> false
q === r #> false
- UML和模式應(yīng)用(原書第3版)
- 名師講壇:Java微服務(wù)架構(gòu)實(shí)戰(zhàn)(SpringBoot+SpringCloud+Docker+RabbitMQ)
- 零基礎(chǔ)學(xué)單片機(jī)C語言程序設(shè)計(jì)
- 零基礎(chǔ)入門學(xué)習(xí)Python(第2版)
- Babylon.js Essentials
- Beginning C++ Game Programming
- Web App Testing Using Knockout.JS
- Scala Functional Programming Patterns
- Drupal 8 Development:Beginner's Guide(Second Edition)
- Java EE 8 and Angular
- Test-Driven iOS Development with Swift
- 例說FPGA:可直接用于工程項(xiàng)目的第一手經(jīng)驗(yàn)
- 小學(xué)生C++趣味編程從入門到精通
- Spring Boot學(xué)習(xí)指南:構(gòu)建云原生Java和Kotlin應(yīng)用程序
- 深入理解MySQL主從原理