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