学习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)}

}

4String内插,真心醉了,和前面说的字符串模板有啥区别,别告诉我是少了个花括号哈。。。

funmain(args: Array<String>) {
    val  name="小猴子"
    
println("Name$name")
}

5、类型判断,我都还不知道这kotlin中如何初始化一个类对象。。。所以这里我改为Stringint举例吧。突然发现这和第二天学的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/pairlist,访问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学习资料了。感情我学了四天还没开始学基础。不过既然选择了就坚持下去。



原创粉丝点击