File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # 其它
2+ * [ C 调用] ( ccall.md )
3+ * [ 命令] ( cmd.md )
4+ * [ 类型转化与提升] ( conpro.md )
5+ * [ 异常分类] ( exception.md )
6+ * [ 表达式] ( expr.md )
7+ * [ 文件系统] ( filesystem.md )
8+ * [ 函数进阶] ( function.md )
9+ * [ I/O] ( io.md )
10+ * [ 遍历] ( iterate.md )
11+ * [ 迭代器] ( iterators.md )
12+ * [ 宏] ( macro.md )
13+ * [ MIME] ( mime.md )
14+ * [ 引用] ( ref.md )
15+ * [ 正则表达式] ( regex.md )
16+ * [ 集合] ( set.md )
17+ * [ 字符串编码] ( string_code.md )
18+ * [ 子字符串] ( substring.md )
19+ * [ 未定义] ( undef.md )
20+ * [ 变量引用机制] ( varref.md )
21+ * [ 版本号] ( versionnumber.md )
Original file line number Diff line number Diff line change @@ -7,4 +7,5 @@ outline = [
77 " meta" ,
88 " async" ,
99 " multithreading" ,
10+ " else"
1011]
Original file line number Diff line number Diff line change 1010| ` !x ` | 否定 |
1111| ` x && y ` | 短路与 |
1212| `x || y` | 短路或 |
13+ | ` x ⊻ y ` | 异或 |
14+ | ` x ⊼ y ` | 非与 |
15+ | ` x ⊽ y ` | 非或 |
1316
1417``` julia-repl
1518julia> !true
@@ -25,9 +28,24 @@ julia> true || "foo"
2528true
2629```
2730
28- 布尔在 Julia 中其实是整数的一类( ` Bool <: Integer ` ),即 ` false ` 可以被提升为 0,而 ` true ` 可以被提升为 1 。
31+ 后三者的使用与 [ 整数的位运算 ] ( int.md#位运算 ) 情况类似 。
2932
30- 特别地,` false ` 可以用于如下功能:
33+ 布尔在 Julia 中其实是整数的一类,其中 ` false ` 可以被提升为 0,而 ` true ` 可以被提升为 1。
34+ ``` julia-repl
35+ julia> Bool <: Integer
36+ true
37+
38+ julia> Int(false)
39+ 0
40+
41+ julia> UInt8(false)
42+ 0x00
43+
44+ julia> Int(true)
45+ 1
46+ ```
47+
48+ 特别地,` false ` 可以用于移除 ` NaN ` 状态:
3149``` julia-repl
3250julia> NaN * 0
3351NaN
87105## 三值逻辑
88106三值逻辑是由 ` true ` ,` false ` 和 ` missing ` 共同组成的。这里 ` missing ` 可以视作“未知是 true 还是 false”
89107
90- 对于二元运算 ,禁止将 ` missing ` 放在左侧,并满足短路规则。
108+ 对于短路运算符 ` || ` 与 ` && ` ,禁止将 ` missing ` 放在左侧,并满足短路规则。
91109
92110``` julia-repl
93111julia> true || missing # 短路原则
@@ -97,4 +115,19 @@ julia> false || missing
97115missing
98116```
99117
118+ 对其它逻辑运算,允许将 ` missing ` 放在左侧,并将它视作未知。
119+ ``` julia-repl
120+ julia> missing ⊻ true
121+ missing
122+
123+ julia> missing ⊻ missing
124+ missing
125+
126+ julia> missing ⊼ true
127+ missing
128+
129+ julia> missing ⊼ false
130+ true
131+ ```
132+
100133[ ^ 1 ] : 这与一些语言的 ` null ` 相似,但不完全相同
Original file line number Diff line number Diff line change @@ -52,6 +52,15 @@ julia> sin(NaN)
5252NaN
5353```
5454
55+ 你可以指定某个位数的浮点数对应的无穷、不是数
56+ ``` julia-repl
57+ julia> typeof(Inf32)
58+ Float32
59+
60+ julia> typeof(NaN32)
61+ Float32
62+ ```
63+
5564同时需注意的是,` -0.0 ` 与 ` 0.0 ` 是不同的
5665``` julia-repl
5766julia> -0.0
@@ -110,7 +119,7 @@ julia> 1.0/9.0
110119| ` isinf(x) ` | ` x ` 是无穷 |
111120| ` isnan(x) ` | ` x ` 是 ` NaN ` |
112121
113- 当然,你也可以使用** 内置(built-in)** 的运算符 ` === ` ,只有 2 个值完全无法分辨(除非阅读代码文件,任何程序都无法区分)时,这个比较结果才为 ` true ` 。
122+ 当然,你也可以使用** 内置** (built-in)的运算符 ` === ` ,只有 2 个值完全无法分辨(除非阅读代码文件,任何程序都无法区分)时,这个比较结果才为 ` true ` 。
114123
115124## 数值转换
116125Julia 支持三种数值转换,它们在处理不精确转换上有所不同
@@ -206,15 +215,16 @@ asind acosd atand acotd asecd acscd
206215| ` lcm(x, y...) ` | 最小公倍数,只接受整数 |
207216
208217### 特殊函数
209- [ 特殊数学函数 - SpecialFunctions] ( ../packages/specialfunctions.md )
218+ 特殊数学函数的计算没有原生提供,需要额外引入 [ SpecialFunctions] ( ../packages/specialfunctions.md ) 包来计算。
210219
211220## 扩展阅读
212221- [ 背景资料与参考文献] ( https://docs.juliacn.com/latest/manual/integers-and-floating-point-numbers/#%E8%83%8C%E6%99%AF%E7%9F%A5%E8%AF%86%E4%B8%8E%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE )
213222- [ 运算符的优先级与结合性] ( https://docs.juliacn.com/latest/manual/mathematical-operations/#运算符的优先级与结合性 )
214223- [ 复数和有理数] ( https://docs.juliacn.com/latest/manual/complex-and-rational-numbers/ )
215224
216225## 说明
217- 对于日常使用,很多函数的名称没有强行记忆的必要,因为要用的时候可以查。
226+ 对于日常使用,很多函数的名称没有强行记忆的必要,因为在使用时可以查找文档、询问 AI 或使用帮助模式。
227+
218228只建议区分好各种除法的不同之处。
219229
220230[ ^ 1 ] : https://docs.juliacn.com/latest/manual/mathematical-operations/
Original file line number Diff line number Diff line change 5757
5858如果你没有得到你期望的结果,可以强制类型转化
5959``` julia-repl
60- julia> x= UInt8(100)
60+ julia> x = UInt8(100)
61610x64
6262
6363julia> typeof(x)
@@ -89,7 +89,7 @@ julia> big(2)^100
8989| ` x + y ` | 加法 | |
9090| ` x - y ` | 减法 | |
9191| ` x * y ` | 乘法 | |
92- | ` x ÷ y ` | 除法(取商) | 使用 ` \div ` 打出 |
92+ | ` x ÷ y ` | 除法(取商) | 使用 ` \div ` + Tab 打出 |
9393| ` x ^ y ` | 幂 | x 的 y 次幂 |
9494| ` x % y ` | 取余 | 等价于 ` rem(x, y) ` ,会保留 x 的正负号 |
9595| ` mod(x, y) ` | 取模 | 得到非负数 |
@@ -147,7 +147,7 @@ julia> typeof(v)
147147Int64
148148```
149149
150- 这是因为 Julia 会进行[ 类型转换和类型提升] ( ../advanced/conpro.md )
150+ 这是因为 Julia 会进行[ 类型转换和类型提升] ( ../advanced/conpro.md ) 。
151151
152152## 位运算
153153[ 什么是位运算] ( ../knowledge/bits.md#位运算 )
@@ -157,15 +157,24 @@ Int64
157157| ` ~x ` | 按位取反 | |
158158| ` x & y ` | 按位与 | |
159159| `x | y` | 按位或 | |
160- | ` x ⊻ y ` | 按位异或 | 也可以使用 ` xor(x,y) ` |
161- | ` x ⊼ y ` | 按位非与 |
162- | ` x ⊽ y ` | 按位非或 |
160+ | ` x ⊻ y ` | 按位异或 | 也可以使用 ` xor(x, y) ` ,或用 ` \xor ` + Tab 打出该符号 |
161+ | ` x ⊼ y ` | 按位非与 | 同上,对应 ` nand ` |
162+ | ` x ⊽ y ` | 按位非或 | 同上,对应 ` nor ` |
163163| ` x >>> y ` | 逻辑右移 | |
164164| ` x >> y ` | 算术右移 | |
165165| ` x << y ` | 逻辑/算术左移 | |
166166
167- !!! compat "Julia 1.7"
168- ` nand ` 和 ` nor ` 的支持至少需要 Julia 1.7
167+ 注意在无符号和有符号时不同的行为:
168+ ``` julia-repl
169+ julia> nand(UInt(0), UInt(0))
170+ 0xffffffffffffffff
171+
172+ julia> nand(0, 0)
173+ -1
174+
175+ julia> nand(3, 5)
176+ -2
177+ ```
169178
170179## 比较
171180| 操作符 | 名称 |
Original file line number Diff line number Diff line change @@ -14,6 +14,18 @@ julia> Int(c)
1414
1515字符可以与整数相转化。这本质上是因为字符并没有什么特殊的,字符有其统一的编号(请参考 ASCII 码表、扩展 ASCII 码表及 Unicode 码表),而后终端通过安装的字体合理地显示字符。
1616
17+ 字符类型不会被自动提升为整数类型:
18+ ``` julia-repl
19+ julia> c = 'A'
20+ 'A': ASCII/Unicode U+0041 (category Lu: Letter, uppercase)
21+
22+ julia> c += 1
23+ 'B': ASCII/Unicode U+0042 (category Lu: Letter, uppercase)
24+
25+ julia> typeof(c)
26+ Char
27+ ```
28+
1729## 字符串
1830` String ` 是 Julia 内置的字符串,可以以 ` Char ` 的形式导出字符。
1931
Original file line number Diff line number Diff line change 11# 生态
2- 生态是指一个语言库和框架 (对应 Julia 中的包)的丰富程度,以及社区的活跃度。
2+ 生态是指一个语言的库和框架 (对应 Julia 中的包)的丰富程度,以及社区的活跃度。
33
44## Julia 版本发布流程
55参阅 < https://julialang.org/blog/2019/09/release-process-zh-cn/ >
Original file line number Diff line number Diff line change 1212祝您学习顺利!
1313
1414## 关于本文档
15+ !!! compat "Julia 1.10"
16+ 除非重要,本文档不会特别注明 Julia 1.10 及以下引入的特性。
17+
1518文中的链接可能指向相关知识([ 完整索引在此] ( ../knowledge/index.md ) )及其它页面上的内容。
1619
1720讨论区可以在注册 [ Github] ( ../knowledge/github.md ) 后使用。** 不要吝啬你的反馈** :如果遇到无法看懂亦或有错的地方,不妨在讨论区中指出或给我提 [ Issue] ( https://github.com/JuliaRoadmap/zh/issues/new ) 。
Original file line number Diff line number Diff line change @@ -16,9 +16,6 @@ UUID("00000000-0000-0000-0000-00000000007b")
1616- ` uuid4([rng::AbstractRNG]) -> UUID ` 生成第四版(基于随机数)的 UUID
1717- ` uuid5(ns::UUID, name::String) -> UUID ` 生成第五版(基于命名空间和域)的 UUID
1818
19- !!! compat "Julia 1.1"
20- uuid5 至少需要 Julia 1.1
21-
2219``` julia-repl
2320julia> using Random
2421
You can’t perform that action at this time.
0 commit comments