summaryrefslogtreecommitdiffhomepage
path: root/zh-cn
diff options
context:
space:
mode:
Diffstat (limited to 'zh-cn')
-rw-r--r--zh-cn/julia-cn.html.markdown40
1 files changed, 24 insertions, 16 deletions
diff --git a/zh-cn/julia-cn.html.markdown b/zh-cn/julia-cn.html.markdown
index 4e97d147..f54a4d4c 100644
--- a/zh-cn/julia-cn.html.markdown
+++ b/zh-cn/julia-cn.html.markdown
@@ -90,11 +90,13 @@ false
# 字符字面量可用 ' 创建
'a'
+# 字符串使用 UTF-8 编码
# 可以像取数组取值一样用 index 取出对应字符
-ascii("This is a string")[1] # => 'T'
+ascii("This is a string")[1]
+# => 'T': ASCII/Unicode U+0054 (category Lu: Letter, uppercase)
# Julia 的 index 从 1 开始 :(
-# 但是对 UTF-8 无效,
-# 因此建议使用遍历器 (map, for loops, 等).
+# 但只有在字符串仅由 ASCII 字符构成时,字符串才能够被安全的引索
+# 因此建议使用遍历器 (map, for loops, 等)
# $ 可用于字符插值:
"2 + 2 = $(2 + 2)" # => "2 + 2 = 4"
@@ -105,7 +107,7 @@ using Printf
@printf "%d is less than %f\n" 4.5 5.3 # => 5 is less than 5.300000
# 打印字符串很容易
-println("I'm Julia. Nice to meet you!")
+println("I'm Julia. Nice to meet you!") # => I'm Julia. Nice to meet you!
# 字符串可以按字典序进行比较
"good" > "bye" # => true
@@ -138,9 +140,10 @@ SomeOtherVar123! = 6 # => 6
# 注意 Julia 的命名规约:
#
-# * 变量名为小写,单词之间以下划线连接 "_" 。
+# * 名称可以用下划线「_」分割。
+# 不过一般不推荐使用下划线,除非不用变量名就会变得难于理解
#
-# * 类型名以大写字母开头,单词以 CamelCase 方式连接。
+# * 类型名以大写字母开头,单词以 CamelCase 方式连接,无下划线。
#
# * 函数与宏的名字小写,无下划线。
#
@@ -179,7 +182,7 @@ b # => [4,5,6]
a[1] # => 1 # 永远记住 Julia 的引索从 1 开始!而不是 0!
-# 用 end 可以直接取到最后索引. 可用作任何索引表达式
+# 用 end 可以直接取到最后索引。它可以用在任何索引表达式中
a[end] # => 6
# 数组还支持 popfirst! 和 pushfirst!
@@ -204,7 +207,7 @@ try
# => [1] getindex(::Array{Int64,1}, ::Int64) at .\array.jl:731
# => [2] top-level scope at none:0
# => [3] ...
- # => in expression starting at ...\LearnJulia.jl:188
+ # => in expression starting at ...\LearnJulia.jl:203
a[end + 1]
# => ERROR: BoundsError: attempt to access 7-element Array{Int64,1} at
# index [8]
@@ -212,7 +215,7 @@ try
# => [1] getindex(::Array{Int64,1}, ::Int64) at .\array.jl:731
# => [2] top-level scope at none:0
# => [3] ...
- # => in expression starting at ...\LearnJulia.jl:196
+ # => in expression starting at ...\LearnJulia.jl:211
catch e
println(e)
end
@@ -222,6 +225,8 @@ end
# 可以用 range 初始化数组
a = [1:5;] # => 5-element Array{Int64,1}: [1,2,3,4,5]
+# 注意!分号不可省略
+a2 = [1:5] # => 1-element Array{UnitRange{Int64},1}: [1:5]
# 可以切割数组
a[1:3] # => [1, 2, 3]
@@ -282,7 +287,7 @@ d # => 5
e # => 4
-# 字典Dictionaries store mappings
+# 字典用于储存映射(mappings)(键值对)
empty_dict = Dict() # => Dict{Any,Any} with 0 entries
# 也可以用字面量创建字典
@@ -323,7 +328,7 @@ end
get(filled_dict, "one", 4) # => 1
get(filled_dict, "four", 4) # => 4
-# Sets 表示无序不可重复的值的集合
+# Set 表示无序不可重复的值的集合
empty_set = Set() # => Set(Any[])
# 初始化一个带初值的 Set
filled_set = Set([1, 2, 2, 3, 4]) # => Set([4, 2, 3, 1])
@@ -417,7 +422,7 @@ end
## 4. 函数
####################################################
-# 关键字 'function' 用于定义函数
+# 关键字 function 用于定义函数
# function name(arglist)
# body...
# end
@@ -553,7 +558,7 @@ typeof(DataType) # => DataType
# Julia 并不只是静态的检查类型
# 用户还可以自定义类型
-# 就跟其它语言的 records 或 structs 一样
+# 就跟其它语言的 record 或 struct 一样
# 用 `struct` 关键字定义新的类型
# struct Name
@@ -641,14 +646,17 @@ end
function meow(animal::Lion)
animal.roar # 使用点记号 '.' 访问属性
end
+# => meow (generic function with 1 method)
function meow(animal::Panther)
"grrr"
end
+# => meow (generic function with 2 methods)
function meow(animal::Tiger)
"rawwwr"
end
+# => meow (generic function with 3 methods)
# 试试 meow 函数
meow(tigger) # => "rawwwr"
@@ -656,8 +664,8 @@ meow(Lion("brown", "ROAAR")) # => "ROAAR"
meow(Panther()) # => "grrr"
# 回顾类型的层次结构
-Tiger <: Cat # => false
-Lion <: Cat # => true
+Tiger <: Cat # => false
+Lion <: Cat # => true
Panther <: Cat # => true
# 定义一个接收 Cat 类型的函数
@@ -733,7 +741,7 @@ fight(l::Lion, l2::Lion) = println("The lions come to a tie")
fight(Lion("RAR"), Lion("brown", "rarrr")) # => The lions come to a tie
-# Under the hood
+# 深入编译器之后
# 你还可以看看 llvm 以及它生成的汇编代码
square_area(l) = l * l # => square_area (generic function with 1 method)