变量的类型可以通过typeof()获取,大小可以使用sizeof()获取,两者可以参数可以是值也可以是数据类型。
julia> typeof([1,2,4]) Array{Int64,1} julia> typeof(0xcafebabe) UInt32 julia> λ = "special_variable_name" "special_variable_name" julia> typeof(λ) String julia> typeof(2e-2) Float64 julia> typeof(Int) DataType julia> typeof(String) DataType julia> typeof(true) Bool julia> sizeof(2e-2) 8 julia> sizeof(Float16) 2 julia> sizeof(Int16(1024)) 2 julia> sizeof("hello") 5 julia> sizeof([1,2,3]) 24 运算Julia主要用于数值优化,科学计算等,表达式贴近数学符号。除了日常四则运算外还有平方运算2^10,以及一些新奇的运算符:
julia> √4 2.0 julia> √√16 2.0 julia> typeof(√) #看起来开根号是个sqrt的语法糖 typeof(sqrt) julia> sqrt(4) 2.0 julia> 2(3+2) 10 julia> x=1 julia> x(x+1)#x放到前面会被解析为可调用对象导致出错 ERROR: MethodError: objects of type Int64 are not callable julia> (x+1)x 2运算符很多,官方文档已有总结,这里直接复制翻译一下:
算术运算符 名称 描述+x unary plus 恒等运算
-x unary minus 求相反数
x + y binary plus 加法
x - y binary minus 减法
x * y times 乘法
x / y divide 除法
x ÷ y integer divide 整数除法,结果保留整数
x \ y inverse divide 等价于 y / x
x ^ y power 平方
x % y remainder 求余
!x negation !true==false,反之亦然。 只用于bool
位运算符 Name
~x 非
x & y 与
x \| y 或
x ⊻ y 异或(⊻这个符号打出来不容易...)
x >>> y 逻辑 右移
x >> y 算术 右移
x << y 逻辑/算术左移 left
数值比较运算符 Name
== 相等
!=, ≠ 不相等
< 小于
<=, ≤ 小于等于
> 大于
>=, ≥ 大于等于
另外Julia有一个特性,可以进行链式比较
julia> 1 < x < 6 true不用像大多数语言x>1 && x<6那样手动逻辑组合。
之前介绍说Julia希望有像Matlab一样强大的线性代数处理表达能力,当然少不了线性代数运算了。可以使用.Operator进行向量运算
julia> [1,2,3].^ 2 3-element Array{Int64,1}: 1 4 9 julia> [1,2,3].+ 2 3-element Array{Int64,1}: 3 4 5 julia> [1,2,3].÷ 2 3-element Array{Int64,1}: 0 1 1最后Julia还支持分数和复数表示,这里就不赘述了,感兴趣的请参见Complex and Rational Numbers
函数和方法Julia认为函数是一个关联实参tuple和一个返回值的对象。
第一种形式是完整的函数定义:
第二种是赋值形式的函数定义
add2(a,b) = a+b函数在Julia被视作一等公民,可以赋值给变量,可以做参数,也可以返回。
julia> apply = function(func,arg) func(arg) end #269 (generic function with 1 method) julia> apply(!,false) true