勇者正在看五大基本資料型別(basic types)的文件,Kotlin 不像一些其他程式語言,它沒有傳統的原始資料型別(primitive types),而是使用封裝類別(wrapper classes)來表示基本資料型別的值。
勇者會開始看基本資料型別,還是因為氣泡排序裡出現了「var swapped: Boolean」的用法。
勇者很困惑的問蕭凱琪:「變數後面不是等號嗎?這個怎麼是冒號?」
蕭凱琪這才發現之前的範例裡的變數都是直接指定值:「喔,那是因為有時候只知道類型是真假值,而不知道或是不需要決定是真還是假。比如,swapped在一開始就決定了真假也沒有意義,因為接下來的『do』裏面馬上就重新指定是假了,所以與其花力氣指定真假,不如空著,還能節省儲存的資源。」
「可是不是『while』裡的條件為真,才會執行內容嗎?」勇者更困惑了。
蕭凱琪解釋:「程式碼執行的順序和我們人類閱讀的順序一致,由左而右,由上而下,『do while』這個例子也不例外,所以可想而知它的執行方式是先執行一次『do』裏的內容,然後看『while』條件來決定要不要重複執行,換句話說,就是『do』裏的內容至少會執行一次。」
勇者恍然大悟:「原來如此!這樣就說得通了。所以Boolean就是真假值的類型,那數字的類型就是Int囉?」
「你怎麼知道?我還以為你會猜是Integer呢。」
畢竟確實有些程式語言是用Integer當作整數類型。
勇者指著程式碼說:「因為放數字陣列的函式是『intArrayOf』啊。」
「哈哈,說的也是呢。」蕭凱琪感到意外卻也很驚喜。「這個切入點滿不錯的,放真假值陣列的函式也是『booleanArrayOf』,我們來看看還有哪些函式!」蕭凱琪說著就點擊了「intArrayOf」函式,跳到「intArrayOf」的所在原始檔案裡。
「好多啊。」勇者有點看花了眼。
蕭凱琪看著程式碼感嘆:「原來有這麼多啊,我之前也沒注意到呢。我看看,嗯⋯⋯除了String以外,其他的基本資料型別都在裡面了。」
「基本資料型別指的是什麼?」勇者聽到新名詞馬上發問。
「嗯⋯⋯你知道積木嗎?」蕭凱琪想著該怎麼說明比較好。
「知道,孩子們的玩具對嗎?」勇者說。
『其實不只是孩子,現在的積木都可以做成機器人來執行走路程式了。』蕭凱琪只在心裡碎碎念沒說出來。
蕭凱琪說:「總之就是和積木一樣,程式提供基本型別,你想要的資料都可以用這些基本型別組合出來。」