Julia体验 语言基础 (2)

变量的类型可以通过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和一个返回值的对象。
第一种形式是完整的函数定义:

function add(a,b) x = a+b #return x 如果没有return默认返回最后一个表达式求得的值 end

第二种是赋值形式的函数定义

add2(a,b) = a+b

函数在Julia被视作一等公民,可以赋值给变量,可以做参数,也可以返回。

julia> apply = function(func,arg) func(arg) end #269 (generic function with 1 method) julia> apply(!,false) true

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwdwx.html