ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于我这周的kotlin的学习:

2022-06-26 03:32:26  阅读:253  来源: 互联网

标签:这周 Int kotlin 学习 start 参数 fun 方法 我们


今天学习了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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有