具有特殊名稱的運算子
一些特殊的表示式對應於具有非顯而易見名稱的函式的呼叫。
expression
calls
[a b c ...]
hcat
[a; b; c; ...]
vcat
[a b; c d; ...]
hvcat
a'
adjoint
a[i]
getindex
a[i] = x
setindex!
a.n
getproperty
a.n = x
setproperty!
匿名函式
julia中的函式是一類物件:可以將它們分配給變數,並使用已分配給變數的標準函式呼叫語法對其進行呼叫。 它們可以用作引數,也可以作為值返回。 也可以使用以下兩種語法之一匿名建立它們,而無需給出名稱:
julia> x -> x^2 + 2x - 1
#1 (generic function with 1 method)
julia> function (x)
x^2 + 2x - 1
end#3 (generic function with 1 method)
julia> map(round, [1.2,3.5,1.7])
3-element array:
1.04.0
2.0
這將建立乙個函式,該函式接受乙個引數x並以該值返回多項式x ^ 2 + 2x-1的值。 請注意,結果是乙個通用函式,但具有基於連續編號的編譯器生成的名稱。
匿名函式的主要用途是將其傳遞給以其他函式為引數的函式。 乙個經典的例子是map,它將乙個函式應用於陣列的每個值,並返回乙個包含結果值的新陣列。
julia>x=[2,3,8]
print(map(x-> (x^2 + 2*x - 1),x))
[7, 14, 79]
julia> map(x -> x^2 + 2x - 1, [1,3,-1])
3-element array:
2 14
-2
可以使用(x,y,z)-> 2x + y-z語法編寫接受多個引數的匿名函式。 零引數匿名函式寫為()-> 3。 沒有引數的函式的概念可能看起來很奇怪,但對於「延遲」計算很有用。 在這種用法中,**塊包裝在零引數函式中,該函式隨後通過將其呼叫為f來呼叫。
例如,考慮此呼叫get以獲取:
get(dict, key) do
# default value calculated here
time()
end#這兩句的意思是:在dict中找 key 的值,如果沒有找到就 do 下面的語句time()並返回。
dict=dict("a"=>2,"b"=>3)
get(dict,"a") do
time()
end#結果是 2
get(dict,"c") do
time()
end#結果是:1.591601437991e9 當前時間
上面的**等效於使用包含在do和end之間的**的匿名函式呼叫get,如下所示:
get(()->time(), dict, key)
Julia 之初體驗(六)有理數
有理數 julia有乙個有理數型別,用來表示整數之比。使用 運算子構造有理數 julia 2 3 2 3julia 6 9 2 3 julia 4 8 1 2 julia 5 15 1 3 julia 4 12 1 3julia自動化簡,自動約分。分母變成不是負數形式。julia有兩函式可以用來取分...
Julia 之初體驗(七)字串
單個字元型別是char。要用單引號,用了雙引號就成了string。julia x x ascii unicode u 0078 category ll letter,lowercase julia typeof ans char julia p p julia typeof ans stringju...
bing之初體驗
哈哈,期待已久的微軟搜尋引擎bing 必應 的中文版今天終於推出了。剛開始使用google搜尋其主頁時怎麼也搜尋不到,還以為微軟食言。後來轉念一想,bing很可能是google未來的最大競爭對手,在當前這個還不為人所熟知的階段,很有可能給對方穿穿小鞋的。於是用在ie自帶的搜尋工具條上鍵入bing之後...