Julia 的字符串十分好用,有许多现成的函数库:数据结构
start_with end_with first lastless
substring chop函数
Julia 的 && 和 || 用途十分普遍,由于它能作分支语句前缀:设计
a > 0 || error "a less zero"字符串
a == 1 && return a1()编译器
a == 2 && return a2()string
因为 Julia 并不检查 && || 链接的语句的返回值,由于这些语句一旦执行,就不会在返回什么值,要么输出错误信息,要么跳出函数。it
Julia 的 Array 能够用于大多数的数据类型:List Vecio
由于它能够从头部或尾部插入元素,也能从尾部或头部弹出元素。这明显是链表的特性,这样的话随机访问,效率是否低下呢?编译
Dict 能够做为 Table Tree Hash 由于它也是泛型定义的:
typealias Dict<String,String> Table
typealias Dict<String,Table> Tree
Julia 的 IO 设计也能让咱们轻松使用 Buffer:
Julia 内置了许多函数,能够方便的直接使用。另外可使用相似动态语言的风格,没必要声明变量的类型,函数参数的类型,返回的类型。这是由于 Julia 内置了一个强大的类型推导系统,它把这些缺失的类型都用本身的方式推导成本身能使用的类型,这也能够看出 Julia 对本身类型系统的自信。
固然,在必要的地方声明类型,也会减小编译器的负担,让代码运行起来更符合本身的预期。
我一直不明白 Julia 没有设计 switch ... case 语句的缘由,它既然有那么好的宏设计系统,又追求代码的简洁,为什么对这种明显让代码更简洁的表达方式视而不见呢?
关键字 function 的设计更让我迷惑,明明能够用更短的 func,def, sub, fn 做为关键字,为什么用这么长的呢?这只能说明 Julia 的核心语法设计的决定权在某个有强迫症的家伙身上。
另一种必要的数据结构是 struct, 在之前的版本中,没有这个关键字,有另一种声明结构的语句:
mutable struct A {
name::Int
}
用于那么能够修改的结构,问题是不能修改的结构有啥用?难道 tuple 就是用这种不能修改的结构设计的?