iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0

詩憶最近正照著考古題寫程式練習,寫著寫著她產生了疑問。「學姐,標準函式庫這麼多函式可以用,什麼時候才會需要其他的函式庫?」

「其實妳已經看過其他的函式庫囉。」

「咦?」詩憶對此毫無印象。

唯心沒有賣關子,直接說出答案。「就是一開始的測試函式庫呀。」她打開專案目錄下的build.gradle.kt檔案,游標移動到dependencies區塊裡的testImplementation這行。

圖1

dependencies {
    implementation("org.junit.jupiter:junit-jupiter:5.7.0")
    testImplementation(kotlin("test"))
}

test資料夾下的函式庫用的就是testImplementation,而main資料夾下用的是implementation。」唯心解釋道。

「真的耶,但是完全沒有用到的真實感⋯⋯」對詩憶來說,專案一開始就帶上的函式庫和標準函式庫沒什麼差異。

「那我們就來加個網路函式庫okhttp吧,算是網路爬蟲的起手式?」唯心提議。

「學姐也寫過網路爬蟲嗎?」詩憶好奇地問。

「寫過呀,但是是用其他語言,因為那時候Kotlin還沒有誕生呢。」唯心說著先打開了okhttp官網,確認最新的版本號碼是4.9.0後就加進對應的implementation

dependencies {
    implementation("com.squareup.okhttp3:okhttp:4.9.0")//新增這行
    implementation("org.junit.jupiter:junit-jupiter:5.7.0")
    testImplementation(kotlin("test"))
}

「學姐!出現了奇怪的大象圖案!」白色的IDE出現任何東西都非常明顯,詩憶一眼就看到了大象圖案。

圖2

「喔,那是一隻待命中的大象,妳不戳牠,牠不會工作。牠的工作就是通知IDEbuild.gradle.kt檔案改動完成,可以同步到專案設定。同步完成,大象就回家了,我也可以開始import函式庫。」唯心很快就照著官網的範例寫出抓取網頁檔案的簡單程式。

圖3

圖4

import okhttp3.OkHttpClient
import okhttp3.Request
import okio.IOException

fun main() {
    val client = OkHttpClient()
    val url = "https://www.google.com/"
    val request = Request.Builder()
        .url(url)
        .build();

    try {
        val response = client.newCall(request).execute()
        println(response.body?.string())
    } catch (e: IOException) {
        println(e.message)
    }
}

圖5

「看到印出的一堆Html語法了嗎?這證明我們成功拿到了Google首頁的網頁檔案字串。」唯心剛說完就聽見身邊傳出響亮的咕嚕聲。

「寫程式很容易消耗能量呢。」她忍住笑意,從口袋裡掏出一塊餅乾遞到詩憶的嘴邊。「給妳,餐廳這時間還沒開呢。」

「唔嗯唔嗯唔嗯。」詩憶嘴裡含著餅乾,話只能說得含糊不清。

唯心倒是能猜到她想說的話。「函式庫再方便也是他人寫的,就像這塊餅乾妳也不知道裡面加了什麼料不是嗎?」

「⋯⋯」

「放心,這個真的只是一塊普通的餅乾。」


上一篇
在程式裡避開踩雷:安全引用空虛值、例外處理和延後、惰性初始化 Null Safety, Exception, lateinit, lazy
下一篇
語法糖小測驗: Scope functions & Extension function
系列文
溫柔學姐的Kotlin補課/教學31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言