Julia之初體驗(十一)函式2

2021-10-06 21:35:30 字數 1809 閱讀 7361

具有特殊名稱的運算子

一些特殊的表示式對應於具有非顯而易見名稱的函式的呼叫。

expression

calls

[a b c ...]hcat

[a; b; c; ...]vcat

[a b; c d; ...]hvcat

a'adjoint

a[i]getindex

a[i] = xsetindex!

a.ngetproperty

a.n = xsetproperty!

匿名函式

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之後...