给别人前先包装:套件、汇入、存取修饰词 Packages, imports and Visibility modifiers

「如果有一天,我也写函式库,要怎麽分享呢?」诗忆好奇的问。

唯心笑了笑。「首先要先定义package name呢。还记得之前写网路连线的import okhttp3.OkHttpClient吗?後面的okhttp3.OkHttpClient就是该函式的package name。」

诗忆疑惑。「没有package name也能写函式的话,为什麽要package name呢?」

package name很类似资料夹的概念,okhttp3.OkHttpClient可以想成okhttp3资料夹下的OkHttpClient档案。如果都没有package name,那同样名称的档案不就冲突了吗?」唯心解释。

「原来是这样啊。那package name也尽量要取的比较不容易和其他人重复罗?」

「是呀,但是也不要取一些没有意义的名字,这样要搜寻的时候不是很容易呢。package name一般都是二到四个层级,第一个会放组织,比如公司就会放comco,但我们只是作业就放学号吧;第二个通常就放专案名称,第三个可以放功能,所以即使是同个函式库也能拥有多个package name成员,但函式库外层需要独一无二的artifact id。」

诗忆写了几个备选package name,最後决定统一用u1234567.exercise开头,宣告放在档案第一行。

pacakge u1234567.exercise

fun main() {
}

「对了,同一层的package之间的档案可以直接互相引用类别和函式,但是有标注private存取修饰词的除外。至於其他层的档案都要写import喔。如果想要汇入多层package,可以使用.*的做法。但是如果汇入太多没有用到的函式库,只是徒增建置所花的时间和建置档案的大小唷。」

import u1234567.exercise.*

诗忆突然想到。「基本函式库都不用汇入耶?」

「是的,都存放在预设区,建置的时候能直接引用。基本函式库有很多呢。」唯心如此说着。

kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.*
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*

<<:  [day26] - Angular Component to Web Component

>>:  Day 15 - 用 canvas 做打弹珠

Day 6 轻松了解欧洲个资隐私保护

在完整完善的隐私保护设计之下,也需有个健全的隐私保护法规在背後做支撑,藉由完善法规制度的保护之下,视...

[DAY 16] 塩米糕

塩米糕 地点:台南市新营区民治路78-19号 时间:11:00~14:00    17:00~20:...

学习日记-2

有一小段时间没跟新了XD! 主要是平时都加班,下班去健身房回到家,就只剩1-2小时的学习时间,就慢慢...

Day 29【Deploy NFT - Deploy on Mainnet】你看,出来了

【前言】 今天要来分享怎麽把我们之前的种种都推上主网啦!但是因为我的企划还没有确认上架时间,这边可...

Day23 - Online DDL

以往使用MySQL遇到要执行ddl语法的时候,为了不影响线上运作,会使用工具来执行。 比较常听到的使...