詩憶最近正照著考古題寫程式練習,寫著寫著她產生了疑問。「學姐,標準函式庫這麼多函式可以用,什麼時候才會需要其他的函式庫?」
「其實妳已經看過其他的函式庫囉。」
「咦?」詩憶對此毫無印象。
唯心沒有賣關子,直接說出答案。「就是一開始的測試函式庫呀。」她打開專案目錄下的build.gradle.kt
檔案,游標移動到dependencies
區塊裡的testImplementation
這行。
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出現任何東西都非常明顯,詩憶一眼就看到了大象圖案。
「喔,那是一隻待命中的大象,妳不戳牠,牠不會工作。牠的工作就是通知IDEbuild.gradle.kt
檔案改動完成,可以同步到專案設定。同步完成,大象就回家了,我也可以開始import
函式庫。」唯心很快就照著官網的範例寫出抓取網頁檔案的簡單程式。
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)
}
}
「看到印出的一堆Html語法了嗎?這證明我們成功拿到了Google首頁的網頁檔案字串。」唯心剛說完就聽見身邊傳出響亮的咕嚕聲。
「寫程式很容易消耗能量呢。」她忍住笑意,從口袋裡掏出一塊餅乾遞到詩憶的嘴邊。「給妳,餐廳這時間還沒開呢。」
「唔嗯唔嗯唔嗯。」詩憶嘴裡含著餅乾,話只能說得含糊不清。
唯心倒是能猜到她想說的話。「函式庫再方便也是他人寫的,就像這塊餅乾妳也不知道裡面加了什麼料不是嗎?」
「⋯⋯」
「放心,這個真的只是一塊普通的餅乾。」