本页面是为了《Kotlin核心编程》这本而构建的,主要讨论和该书中涉及的相关技术和勘误说明,也欢迎任何关于本书内容的讨论,谢谢!

《Kotlin核心编程》已经由机械工业出版社于2019年05月出版,水滴技术团队是该书的作者团队,请大家支持,也请批评指教 ^_^

如果您喜欢Kotlin,可以在各大购书网站搜索“Kotlin核心编程”来购买

您也可以考直接通过如下的任何一个链接去了解或购买该书:

当当网:http://product.dangdang.com/27859545.html

京东:https://item.jd.com/12519581.html

书评在豆瓣:https://book.douban.com/subject/33419618/

勘误

我们对由于不严谨、稿件版本等原因导致的错别字、代码、格式等问题表示抱歉,会在新版次印刷前进行订正。

版次(2019 年 4 月第 1 版第 1 次印刷)































































































































页码 原文 改为
39 "kot" >= "abc" && "abc" <= "xyz" "kot" >= "abc" && "kot" <= "xyz"
56 internal public Bird internal class Bird
60 若要继承…抽象类实现的。 若要继承该类则需要将子类定义在同一个文件中,其他文件中的类将无法继承这个类。但这种方式有一定的局限性,即密封类不能被初始化,因为它背后是基于一个抽象类实现的。
64 I am run very fast I can run very fast
66 fun kind() = "flying animals"(Flyer接口中) fun kind() = "[Flyer] flying animals"
66 fun kind() = "flying animals"(Animal接口中) fun kind() = "[Animal] flying animals"
127 ?Any?是?Any的父类型 Any?是Any的父类型
130
1
2
3
fun sum(a: Int, b: Int) {
return a + b
}



1
2
3
fun sum(a: Int, b: Int): Int {
return a + b
}


142 public interface List<? extends T> { ... } List<? extends Object> list = new ArrayList<String>();
144
dest: Array<Double>

dest: Array<Double?>
145
dest: Array<T>

dest: Array<T?>
198 fun toMap(a: User): Map<String, Any> = { ... } fun toMap(a: User): Map<String, Any> { return ... }
199 fun <A : Any> toMap(a: A): Map<String, Any?> = { ... } fun <A : Any> toMap(a: A): Map<String, Any?> { return ... }
199 素据 数据
206 Succ::class.declaredMemberExtensionFunctions.map{it.name} Nat::class.declaredMemberExtensionFunctions.map{it.name}
206 Nat::class.declaredMemberExtensionProperties Nat::class.declaredMemberExtensionProperties.map{it.name}
207 缺乏必要的Person类 KMutablePropertyShow函数上方增加 data class Person(val name: String, val age: Int, var address: String)
211 Sourc。 Source。
211 RUNTIM。 RUNTIME。
254
1
2
3
4
5
f1 :: Int -> Int -> Int
f1 x y = x + y
f2 :: Int -> Int
f2 x = x



1
2
3
4
5
f1 :: Int -> Int -> Int
f1 x y = x
f2 :: Int -> Int
f2 x = f2 x


254
1
f1(1(f2(2)))


1
f2(2)



1
f1 1 (f2 2)


1
f2 2


293
没有synchronized,

没有synchronized关键字,
294
1
2
3
4
5
6
7
8
9
10
fun <T> withLock(lock: Lock, action: () -> T): T {
lock.lock()
try {
return action()
} catch (ex:Exception) {
println("[Exception] is ${ex}")
} finally {
lock.unlock()
}
}



1
2
3
4
5
6
7
8
fun <T> withLock(lock: Lock, action: () -> T): T {
lock.lock()
try {
return action()
} finally {
lock.unlock()
}
}


299
这个这个方案

这个方案