查缺补漏
为了避免你遗漏一些重要的细节,在正式引入 advanced
节前(当然也可以就此停止),这里进行一些补充:
加载代码
可以通过 include(路径)
加载一个路径下的代码,如使用 include("foo.jl")
导入相对路径下 foo.jl
中的代码。这类似于 C 中的 #include ""
。
这种加载相当于把那个文件中的代码复制到 include
所在位置,显然也是有返回值的。
...
...
语法除在函数定义时表示不定参数外,还可表示将可以遍历的东西展开
julia> ([1,2,3]... , [4]...)
(1, 2, 3, 4)
julia> [1:3... , 1:2...]
5-element Vector{Int64}:
1
2
3
1
2
julia> gcd((2,4,8)...)
2
符号
Symbol
是一种类似于字符串的不可变类型,通常用于元编程或高效的存储
julia> :p
:p
julia> Symbol(":")
:(:)
julia> String(:p)
"p"
docstring
当你创建一个新的全局变量/函数/类型等时,可以在前面紧跟一个字符串,它会自动出现在帮助文档中
julia> "something" aaa=1
aaa
help?> aaa
search: aaa readavailable bytesavailable AbstractArray AbstractRange
something
这种“前面紧跟”规则是预设的,也可以改变,可参阅关于代码文档的更多内容。
变量引用机制
你可能已经意识到了,一些函数(通常末尾带 !
)可以改变变量的值,而一些类型的实例却总是无法被改变的。关于这个,请参阅语言进阶 - 变量引用机制。