在前面的章節裡有提到如何從 Collection 裡取值,不過在該章節裡我們討論的都是如何取「單一」值,但實務上常常要取的是多個值或是一段範圍的值,這時就要使用...
在做 Collection 操作時,還有一個很常見的情境,就是要將 Collection 內所有元素做運算,最後回傳「一個值」,這種操作我們就統一稱做聚合(Ag...
前面的章節從 Collection 的基礎語法到核心程式碼都看了一輪,接下來想討論一下 Collection 可以如何活用? 我們之所以用 Collection...
昨天我們使用了 shareIn 將 Flow 轉成 SharedFlow, 我們來研究一下這個函式。 public fun <T> Flow<...
在處理資料的時候,我們常常會先把 Collection 裡的資料取出後,再逐一轉換成另外一個類別或格式,由於 Collection 有 Iterator 的特點...
在整理資料的時候,分組也是一個很常見的需求,比方說 Collection 裡有很多字串,你想要依照字首的字母做分類,這樣的需求 Kotlin 的標準函式庫也都準...
過濾(Filtering)是 Collection 操作裡很常用的動作,這個功能一如前面幾個章節裡的範例是以 Lambda 來實作,要注意的是,這個實作並不會更...
Flow 經過 Intermediate operators 將資料經過處理之後,最後一步則是要把資料輸出,而將資料輸出則是要透過 Terminal opera...
Coroutine 是非同步程式的解決方案,我們將耗時的任務置放在 suspend 函式中,在正常的使用 coroutine 情況之下,這些 suspend 函...
Collection 裡的元素一放多了,就免不了要在裡面找東西。跟過濾一樣,搜尋也是很常見的的需求,在這個章節裡就要跟大家討論一下 Collection 的搜尋...
在前面的章節裡,我們討論了如何建立 Collection,以及操作它們的各種方式。Collection 裡的四大類別雖然看似相似,但實則有些微的差異。在這個章節...
What is Flow? Flow 是用來處理非同步的資料流的一種方式,它會按照發射 (emit) 的順序來執行。 An asynchronous data...
Coroutine 的三大要素不知道大家還記得嗎?CoroutineScope、Suspend function、Dispatchers。 CoroutineS...
為了避免像上次一樣白做工的情形,今天和老姐進行了問答聊天室結構的討論。 「什麼時候建立連線?」老姐提問。「是玩家進到挑戰題目頁面,還是打開 App 期間一直連線...
Flow 是屬於 coroutine 範圍項目,coroutine 中一個重要的特點可以輕易的切換執行緒,在 Flow 也有這項功能嗎? 我們知道要在 Coro...
還記得launch 的回傳值是 Job 嗎?我們可以使用 job 的 cancel() 來取消該 Coroutine。不知道你有沒有想過 Job 是什麼東西呢?...
我們在上一篇的文章中,介紹了 Flow 的基本概念,包括如何建立一個 Flow,以及 Flow 是一個 Cold stream,所謂的 cold stream...
Collection 裡的資料多了後,有時不免要對其中的內容做檢查,方便做邏輯判斷。在這個章節裡,就要介紹一些跟檢查有關的 Collection 操作。 是否包...
經過前面這麼多章的說明,大家應該已經瞭解到用 Collection 處理資料的方便之處,我們可以把要處理的資料分成多個步驟,每一個步驟做一件事,每一件事的語義和...
在上一篇文章我們建立 Channel 時,使用 Channel<E>() 來建立一個 Channel。這個方法是由 Coroutine 所提供的一個...
在前幾章的程式碼裡,常常會出現 <T> 這樣的標記,這個 T 代表任一型別(Type),而這個型別是可以讓外部決定的。這種標記稱為泛型(Generi...
Flow 是依序執行的,如果使用 collect 作為終端運算子,那麼在最後就會按照每一個元素所要花費的時間一一的執行,並把結果吐出來。 如下面的範例: cla...
在前面的章節,我們討論的主題都是如何「應用」Collection 的各種功能,但身為一位 Kotlin 開發者,一定會好奇這些標準函式庫是怎麼實作出來的。因此,...
這是我們內建的 suspend 函式第三篇,讓我們看看有哪些吧: joinAll() 還記得 join() 的功能是什麼嗎?join() 可以讓目前的 cor...
不知不覺過了三十天,在這三十天中,我們學習了 Coroutine 的每一個面向,我們知道 Coroutine 是用來解決非同步程式執行的問題,它讓我們在面對非同...
Flow 是 cold stream,只有在呼叫 Terminal operator 的時候才會執行。也就是說每一個 Flow 都只有一次性的工作,只要呼叫一次...
在上一章裡我們提到 Sequence<T> 這個跟 Iterable<T> 用起來很像,但實際行為有點不同的物件。我們可以把 Itera...
Coroutine 中如果要執行非同步程式,則需要把耗時任務寫在 suspend 函式中,並且在一個 CoroutineScope 中來執行,而建立 Corou...
不知不覺來到了第28天,最後我們來做個複習吧。 Coroutine 的目的 用來解決非同步程式執行的問題,在以前面對非同步的程式時,我們可能需要建立一個新的執行...
上一個章節我們在探索 forEach() 原始碼的時候,除了使用到泛型、Lambda、inline 等技巧外,其實還有用到 Kotlin 的 Extension...