学习kotlin第四天
来源:互联网 发布:2016淘宝卖家花呗开通 编辑:程序博客网 时间:2024/06/11 11:37
今天继续跟着kotlin官方文档踩坑,还是那句话,仅为记录我的学习过程,不喜勿喷。
这文档顺序感觉好乱呀,东一句西一句的,还好心地给我加了引用。。。不管了,就按前后顺序来继续。
坑1、创建DTOs(POJOs/POCOs),额,只百度到DTO是数据传输对象,POJO是简单Java对象。
data classCustomer(valname: String, valemail: String)
想吐,介绍了如何创建,却不介绍如何调用,唉,就当是先混个眼熟吧。
坑2、函数参数的默认值,不像java有参数就必须传。当然,规规矩矩地传参数是最好的,不然参数多了就乱套了。
funmain(args: Array<String>) {
foo(3,"3")
foo()
}
funfoo(a: Int =2, b: String ="2") {
println(a)
println(b)
}
坑3、过滤list,昨天已经见过一面了,照葫芦画瓢用forEach遍历打印出来
funmain(args: Array<String>) {
vallist =listOf("pig","dog","snake","monkey");
list.filter{x->x.length>4}
.forEach{println(it)}
}
如果我没猜错的话it代表集合里的一个对象,所以可以简写成
funmain(args: Array<String>) {
vallist =listOf("pig","dog","snake","monkey");
list.filter{ it.length>4 }
.forEach{println(it)}
}
坑4、String内插,真心醉了,和前面说的字符串模板有啥区别,别告诉我是少了个花括号哈。。。
funmain(args: Array<String>) {
val name="小猴子"
println("Name$name")
}
坑5、类型判断,我都还不知道这kotlin中如何初始化一个类对象。。。所以这里我改为String和int举例吧。突然发现这和第二天学的is判断数据类型不是同一个东西吗。。。
funmain(args: Array<String>) {
vals: String ="1"
foo(s)
}
funfoo(a: Any) {
when(a) {
isInt ->println("Int")
isString ->println("String")
else->println("else")
}
}
坑6、只读类型的map,遍历map/pair型list,访问map。这文档重复的挺多的,我还是把几个归在一起学吧。。。
funmain(args: Array<String>) {
valmap =mapOf("a"to1,"b"to2,"c"to3)
for((k, v)inmap) {
println("$k ->$v")
}
valmap2 =mapOf(Pair("0","1"), Pair("2","3"))
for((k, v)inmap2) {
println("$k ->$v")
}
println("map[a]="+ map["a"])
}
我奇怪的是map["a"]=1这句代码会报错,我弄了半天也不知道如何给其赋值。。。
No set method providing array access Unresolved reference.
None of the following candidates is applicable because of receiver type mismatch:
@InlineOnly public operator inline fun <K, V> MutableMap<String, Int>.set(key: String, value: Int): Unit defined in kotlin.collections
@InlineOnly public operator inline fun kotlin.text.StringBuilder /* = java.lang.StringBuilder */.set(index: Int, value: Char): Unit defined in kotlin.text
坑7、又是个前面遗漏的坑,unitl关键字与区间结合使用时表示半开区间。
funmain(args: Array<String>) {
for(iin1until10) {//不包括10
println(i)
}
}
坑8、延迟属性......扩展函数.....创建单例。。。看不下去了,一脸的懵逼。
此处省略若干个坑。。。
坑9、命名风格,习惯了java的命名规范了,那就将就着用吧。
坑10、能否别挑战我的耐心,类型和超类型之间的冒号前要有一个空格,我都没见过......我在心里不断告诉自己,先混个脸熟。
实例和类型之间的冒号前不要有空格。
lambda表达式中的花括号前后要有空格,箭头符号前后要有空格
唉,我试了一下,这空格加不加都没错,但IDE上一按格式化它就自动格式化好了,不用记。
坑11、参数较多时不要写在一行,参数右括号另起一行,继承于的类和右括号一行,多个则另起一行,优先超类构造函数的调用。
classPerson(
id: Int,
name: String,
surname: String
) : Human(id, name),
KotlinMaker {
// ……
}
坑12、返回类型为Unit类型时应省略
funfoo() {// 省略了 ": Unit"
}
看见这文档的目录我也晕了,有点后悔选择它作为我的第一份kotlin学习资料了。感情我学了四天还没开始学基础。不过既然选择了就坚持下去。
- 学习kotlin第四天
- 学习kotlin第二天
- Kotlin 从学习到 Android 第四章 控制流
- kotlin 第四站
- 《Kotlin 程序设计》第四章 Kotlin 语法基础
- Kotlin学习
- Kotlin学习
- Kotlin学习
- Kotlin 学习
- kotlin学习
- 学习kotlin
- Kotlin学习
- java学习第四天
- COBOL学习第四天
- ajax学习第四天
- 学习Java第四天
- 程序学习第四天
- 学习jsp第四天
- ios开发 loaded the "ViewController" nib but the view outlet was not set.'
- String 常用方法
- 构建微服务实验环境(四):Kubernetes 集群
- 如何查看服务器配置
- python 命名规范
- 学习kotlin第四天
- Retrofit2源码分析
- 使用github上传本地项目
- pymssql操作sqlserver报错的一次处理: Unclosed quotation mark after the character string
- Spring_day01
- Android之内存泄露、内存溢出、内存抖动分析
- 在Weblogic上创建和启动自己的Server
- 想快速全面了解LoRa?看这篇就够了!
- springboot 由 jar包转 war包