依函式分派(dispatch on function)算是在 Julia 語言中相當常見的一個技巧,它依賴 Julia 的多重分派機制(multiple dispatch),可以依據不同的函式有不一樣的行為。

舉例

在資料分析或是資料庫分析中,常常會需要對資料欄位進行聚合運算,像是加總的 sum、平均的 avg 或是計數的 count。他們都是用同一個欄位的資料,聚合成一個值輸出。當我們需要將資料相加時,我們會寫出以下的程式碼:

1
2
a = [1,2,3,4,5]
sum(a)

這看起來很直觀,但往往在資料庫的設計當中,只會設計一些常用到的聚合函式(aggregate function)。

那麼有沒有一個方式可以得到一個比較廣義的聚合函式呢?

繼續閱讀

依型別分派(dispatch on types)算是在 Julia 語言中相當常見的一個技巧,它依賴 Julia 的多重分派機制(multiple dispatch),可以依據不同的型別有不一樣的行為。

依據不同的型別有不同的行為,而不是實體。直觀上看起來會有點像傳統物件導向當中的 class method,不過在 Julia 當中還有更多用途。

繼續閱讀

在 Julia 中存取物件的欄位的時候,設計者會想要對於存取的過程中加上一些檢查,這個想法是來自於傳統物件導向 getter/setter 的概念。

例如,在自己設計的物件當中有兩個矩陣,這兩個矩陣可以讓使用者隨意更新,但是需要保證這兩個矩陣的維度是一致的。這個時候就需要在使用者更新矩陣的時候加入檢查,以確保兩個矩陣之間的維度是一致的,如果檢查不通過,可能會跳例外或者是不讓矩陣被更新。

繼續閱讀

這幾年,隨著接觸的東西變多,知道的東西變多,個性上也有點變化。

約莫四五年前,碩班時期接觸到一些很棒的網路技術文章,當時線上課程也非常熱門,很多優秀的大學紛紛把他們的上課內容做成教材釋出。也因為這樣,我自己其實從這些網路資源受惠非常多。當時也是自己在發展自學能力的輝煌時期。

繼續閱讀

這個問題在官方文件中並沒有詳細記載,所以覺得值得紀錄一下。

查閱 @async 的文件會講說,他會用一個 Task 把後面的表達式包裝起來,並且將他掛到排程器的佇列(queue)中。意思就是將表達式包裝成一個任務,並放到佇列中等待 CPU 核心的資源來執行他。

繼續閱讀

Yueh-Hua Tu

目標是計算生物學家!
Systems Biology, Computational Biology, Machine Learning
Julia Taiwan 發起人


研發替代役研究助理


Taiwan