关于我这周的kotlin的学习:
作者:互联网
今天学习了kotlin方法的参数和一些lambda的一些知识,其中也是和我们上次日报中讲的方法一样,有三种分类,默认参数,具名参数,可变数量的参数。
和以前一样,我们举个例子来理解这个知识点:
先是默认方法:
fun read(offest: Int=0,start: Int) {/* */}
我们来看这行代码,我们定义了一个read的方法,我在里面定义了两个参数,一个是offset,还有一个数start,两个参数,参数后面跟着的Int是他的返回值,然后offset的默认值为0,如果我们在使用方法的时候,没有给offset这个参数传值的话,则offset参数将默认为0
当省略相应的参数是,使用默认值。这个与java相比,可以减少重载数量,我们可以通过类型后面的等于来设置默认值。
具名参数:
如果一个默认参数在一个无默认的参数之前,那么无默认值的参数,只能通过使用具名蚕食调用该方法来使用:
fun read(offest: Int=0,start: Int) {/* */}
如果我们现在想让offest使用默认参数,然后我们需要给start这个参数传参,我们可以这样read(start=1)这样的话,我们知识给start传入了值,而offset还是在用自己的默认值。
第二种形式:fun read(offest: Int=0,start: Int,action:() ->Unit) {/* */}
这个代码的第三个参数是一个方法,那么他可以作为具名参数,括号从内部传入,也可以从括号外部传入。
可变数量的参数:
方法的参数(一般是最后一个)可以使用varargs修饰符标记。
如果我们传入的参数是一个不确定的参数,打个比方,我想要传入的参数不止一个,我想传入多个参数1个,2个,3个都行。如果说我定义了一个字符数组,然后我们想把append这个方法传递给他,我们可以这样:
val world = charArrayOf('w','o','r','l','d')
val result = append('h','e','l','l','o',' ' , *world)
我们在world的前面加上一个星号就可以就可以把world里面的元素一个个传递到append的方法里面去,由于append的参数是不定长的,所以我们可以传入多个参数,然后我们在用*将world里面的元素传入进去。
关于lambda的学习我暂且学的不够多,这周只学了一下的一些东西。
首先我们先介绍一下kotlin的方法:
目录:
1.方法声明
2.方法参数
3.方法用法
方法的声明:
普通类:
我们这边举一个例子:fun max(a:Int,b:Int):Int{
return if(a>b) a else b
}
这个东西我们这样理解:fun是用来声明方法的,max为这个方法的名字,括号中的数是参数,而且,在kotlin中,参数在左边,参数了类型在右边,中间我们使用冒号了隔开
如果有多个参数的话,参数之间用逗号来隔开(注意你的逗号是不是中文的),括号后面的:Int是它的 返回值,在大括号里面的代码,我们称之为方法体;
如果这里的a是大于b的,则我们返回的是a的值,如果不是,则返回的是b的值。
调用:
我们在举一个例子:
fun main(){
person().test()
}
class person{
fun test(){
print("hello world")
}
看这个代码,其实我觉得这个代码有点像我们之前学的自定义函数,感觉原理都是差不多的,我们现在main的外面定义一个类,然后在类里面定义一个方法。
然后我们在到main里面调用这个方法。
也许这个报告写的非常的水,但是在接下来的时间里我会慢慢进步的,如果我写的地方有错误,希望可以指出,我会马上改正的。
下面是一些在学习当中用到的代码和注释,如果有误希望可以指出。
package com.example.firstapp fun main() { Person().learn(); Person.test2(); read(1,2, action = { //正常来说,我们可以这样写return@read "read2",但是为了方便,我们可以值接将return给去 //掉。变成"read2" "括号内传递action参数" }) read(start = 1) { //这个就可以理解为我们说的action的返返回类型,String "括号外传递action参数" } NumUtil.double(num = 2) val a:Int = NumUtil.double(num = 2) println(a) } //普通类 class Person { fun learn() { println("hello world") } companion object { fun test2() { print("成员变量") } } } //offest为int型,默认值为0 //start为int,没有默认值 //actino为一个参数,参数的名字叫做action。 //判断参数如何为一个方法:如果在后面有个小括号,或者说参数类型为(),则他是一个方法类型。 //eg:action:() //返回值我们用->来指定的,如果我们不需要他有返回值,我们使用Unit来表达就行了。如果我们需要的 //返回类型是Int类型的, //我们就把Unit变成Int就行了。 fun read(offest: Int=0,start: Int,action:()->String) { action(); } //静态类 //静态类可以不用构建实列对象,我们可以直接通过类名来进行访问静态方法 object NumUtil { fun double(num:Int):Int { return num * 2 } }
标签:这周,Int,kotlin,学习,start,参数,fun,方法,我们 来源: https://www.cnblogs.com/AnimeBucket/p/16412859.html