Skip to content

Commit bbf908d

Browse files
committed
docs: add details
1 parent 082c1f0 commit bbf908d

9 files changed

Lines changed: 104 additions & 18 deletions

File tree

docs/advanced/else.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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)

docs/advanced/setting.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ outline = [
77
"meta",
88
"async",
99
"multithreading",
10+
"else"
1011
]

docs/basic/bool.md

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
| `!x` | 否定 |
1111
| `x && y` | 短路与 |
1212
| `x || y` | 短路或 |
13+
| `x ⊻ y` | 异或 |
14+
| `x ⊼ y` | 非与 |
15+
| `x ⊽ y` | 非或 |
1316

1417
```julia-repl
1518
julia> !true
@@ -25,9 +28,24 @@ julia> true || "foo"
2528
true
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
3250
julia> NaN * 0
3351
NaN
@@ -87,7 +105,7 @@ true
87105
## 三值逻辑
88106
三值逻辑是由 `true``false``missing` 共同组成的。这里 `missing` 可以视作“未知是 true 还是 false”
89107

90-
对于二元运算,禁止将 `missing` 放在左侧,并满足短路规则。
108+
对于短路运算符 `||``&&`,禁止将 `missing` 放在左侧,并满足短路规则。
91109

92110
```julia-repl
93111
julia> true || missing # 短路原则
@@ -97,4 +115,19 @@ julia> false || missing
97115
missing
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` 相似,但不完全相同

docs/basic/float.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ julia> sin(NaN)
5252
NaN
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
5766
julia> -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
## 数值转换
116125
Julia 支持三种数值转换,它们在处理不精确转换上有所不同
@@ -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/

docs/basic/int.md

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ UInt8
5757

5858
如果你没有得到你期望的结果,可以强制类型转化
5959
```julia-repl
60-
julia> x=UInt8(100)
60+
julia> x = UInt8(100)
6161
0x64
6262
6363
julia> 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)
147147
Int64
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
| 操作符 | 名称 |

docs/basic/string.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff 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

docs/blog/ecosystem.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# 生态
2-
生态是指一个语言库和框架(对应 Julia 中的包)的丰富程度,以及社区的活跃度。
2+
生态是指一个语言的库和框架(对应 Julia 中的包)的丰富程度,以及社区的活跃度。
33

44
## Julia 版本发布流程
55
参阅 <https://julialang.org/blog/2019/09/release-process-zh-cn/>

docs/meta/about.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
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)

docs/packages/uuids.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff 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
2320
julia> using Random
2421

0 commit comments

Comments
 (0)