Julia 的模块是一个独立的全局变量工作区。它由句法限制在 module Name ... end 之间。在模块内部,你可以控制其他模块的命名是否可见(通过 import ),也可以指明本模块的命名是否为 public(通过 export)。下面的例子展示了模块的主要特征。这个例子仅为演示: module MyModule using Lib using BigLib: thing1, thing2 import Base.
Julia 可以将数学运算符的参数提升为同一个类型,这些参数的类型曾经在 ,,,及中提到过。在某种意义上,Julia 是“非自动类型提升”的:数学运算符只是有特殊语法的函数,函数的参数不会被自动转换。但通过重载,仍能做到“自动”类型提升。类型转换convert 函数用于将值转换为各种类型。它有两个参数:第一个是类型对象,第二个是要转换的值;
中说到,函数是从参数多元组映射到返回值的对象,若没有合适返回值则抛出异常。实际中常需要对不同类型的参数做同样的运算,例如对整数做加法、对浮点数做加法、对整数与浮点数做加法,它们都是加法。在 Julia 中,它们都属于同一对象: + 函数。对同一概念做一系列实现时,可以逐个定义特定参数类型、个数所对应的特定函数行为。方法是对函数中某一特定的行为定义。
Julia 中,如果类型被省略,则值可以是任意类型。添加类型会显著提高性能和系统稳定性。Julia 类型系统的特性是,具体类型不能作为具体类型的子类型,所有的具体类型都是最终的,它们可以拥有抽象类型作为父类型。其它高级特性有:不区分对象和非对象值:Julia 中的所有值都是一个有类型的对象,这个类型属于一个单一、全连通类型图,图中的每个节点都是类型。
Julia 提供复数和分数类型,并对其支持所有的标准数学运算 。对不同的数据类型进行混合运算时,无论是基础的还是复合的,都会自动使用类型转换和类型提升。复数全局变量 im 即复数 i ,表示 -1 的正平方根。因为 i 经常作为索引变量,所以不使用它来代表复数了。Julia 允许数值文本作为代数系数 ,也适用于复数:julia>
在 Julia 中的一个变量是一个与一个值关联(或绑定)的名称。它的作用表现在当你想存储一个值(例如,你在进行一些数学运算后得到了一些值,你需要在之后使用到这些值)时。例如:# 给变量 x 赋值为 10julia> x = 1010# 用 x 的值做一些数学运算julia> x + 111# 重新给 x 赋值julia>
Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。由于 Julia 的编译器与像 Python 或者 R 语言的解释器不同,你可能首先会发现 Julia 的性能并不那么直观。如果你发现哪些地方比较慢, 我们强烈建议你在做任何尝试之前通读一下代码性能优化章节。一旦你明白了 Julia 是如何工作的,你就可以写出来速度媲美 C 语言的代码。
Julia 是一个新的高性能动态高级编程语言。语法和其他编程语言类似,易于其他语言用户学习。Julia 拥有丰富的函数库,提供了数字精度、精致的增幅器(sophisticated amplifier)和分布式并行运行方式。核心函数库等大多数库是由 Julia 编写,但也用成熟的 C 和 FORTRAN 库来处理线性代数、随机数产生和字符串处理等问题。