关于我这周的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
}
}
关于我这周的kotlin的学习:的更多相关文章
- 20145322第九周JAVA程序设计基础学习总结
20145322第九周JAVA程序设计基础学习总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联机数据库的标准规范.它定义一组标准类与接口,应用程序需要 ...
- 这一周~&&html+css的学习感悟
一周一周过的很快,这个礼拜的学习状态并不是很好,好像每个月都有那么几天学习状态不怎么样.不知道是懈怠了还是怎么了…… 没有辜负上周一开始的目标,4.6号之前我就糊好了篇论文交了上去,不知道结果如何,希 ...
- 第三周JAVA程序设计基础学习总结
20145322学号 <Java程序设计>第3周学习总结 ## 教材学习内容总结 之前第三章说过Java中主要有基本类型和类类型两种类型系统,第四章主要谈类类型. 类定义时使用class关 ...
- 第三周作业-课本&&视频学习
<网络攻防技术与实践>第三周作业 Part I 寻找自己留在互联网上的足迹并消除隐私 1.1 google/baidu搜索自己的qq号 搜索结果如图,搜到的有用信息其实就是图上这么几条,能 ...
- Kotlin重新学习及入门示例
在2017和2018其实已经对Kotlin的基础语法进行了一些学习,但是!!如今已经是2019年,中间间断时间已经很长了,所以准备接下来从0再次出发深入系统完整的来审视一下该语言,毕境如今它的地位是越 ...
- 绿洲作业第二周 - Y3每日中文学习任务清单
1. 本周仍是古诗学习周,老师已在“最美诵读”上布置本周需完成的任务,请孩子在“最美诵读”小程序中,结合老师发的学习任务清单,合理安排时间进行学习.如果孩子另有学习安排,可在周日(2.23)23:59 ...
- Kotlin入门学习笔记
前言 本文适合人群 有一定的java基础 变量与方法 变量声明及赋值 var 变量名: 变量类型 val 变量名: 变量类型 这里,var表示可以改变的变量,val则是不可改变的变量(第一个赋值之后, ...
- Kotlin基础学习
Kotlin 和 java 都是一种静态类型的编程语言.表达式的类型在编译期已经确定,编译期能验证对象是否包含想访问方法或是字段,维护正确性与性能的同时保持源代码的简洁 静态类型的 ...
- Kotlin语言学习笔记(2)
类(classes) // 类声明 class Invoice { } // 空的类 class Empty // 主体构造器(primary constructor) class Person co ...
- Kotlin语言学习笔记(1)
fun main(args: Array<String>) { println("Hello, World!") } 基本语法 声明常量用val,声明变量用var,声明 ...
随机推荐
- Nginx日志重定向到标准输出
背景静态站点使用`docker`部署时,希望`nginx前台启动`的同时可以将错误日志和访问日志全部重定向到标准输出,便于采集和处理! 实现只需要修改`nginx.conf`中`3行`关于日志的配置就 ...
- Win11telnet服务怎么开启详细介绍
很多用户想知道在windows11电脑中要如何开启telnet服务,用户这时候是打开windows11电脑的设置,接着点击应用设置中的可选功能,然后点击更多windows功能就能看到telnet客户端 ...
- initMySQLPool
package com.be.edge.asset.source; import io.vertx.core.AbstractVerticle; import io.vertx.core.Promis ...
- Thrift中enum的一些探究
http://anruence.com/2018/06/27/enum-thrift/ 问题 在用注解定义的Thrift enum 中,如果客户端端和服务端的enum定义不同,比如调换了enum中的枚 ...
- 硬件开发笔记(三十二):TPS54331电源设计(五):原理图BOM表导出、元器件封装核对
前言 一个12V转5V.3.3V和4V的电源电路设计好了,下一步导出BOM表,二次核对元器件型号封装,这是可以生产前的最后一步了. 导出BOM表 步骤一:打开原理图 打开项目,双击点开原理 ...
- modbus调试助手/mqtt调试工具/超轻巧物联网组件/多线程实时采集/各种协议支持
一.前言说明 搞物联网开发很多年,用的最多的当属modbus协议,一个稳定好用的物联网组件是物联网平台持续运行多年的基石,所以这个物联网组件从一开始就定位于自研,为了满足各种场景的需求,当然最重要的一 ...
- Qt音视频开发21-通用硬解码
一.前言 硬件解码是图形芯片厂家提出的用GPU资源解码视频流的方案,与之相对的是软解,也就是传统的用CPU承担解码工作的方案:优点是效率高,功耗低.热功耗低,缺点是缺乏有力的支持(包括滤镜.字幕等), ...
- Windows10 64环境下用Qt5.12.12自带的mingw730_64构建编译OpenCV4.1.0时cmake-3.20.6中的参数配置
一.环境条件说明: 操作系统:Windows10 64环境 编译工具:用Qt5.12.12自带的mingw730_64构建 构建对象:编译OpenCV4.1.0的Release 64位和Debug 6 ...
- uwp 获取屏幕分辨率
public static Size ScreenSize { get { //screen resolution var height = DisplayInformation.GetForCurr ...
- JIRA/Jira-cloud Rest API
官方参考: https://developer.atlassian.com/cloud/jira/platform/rest/v3/ 记录部分有用的 获取用户: /rest/api/2/users/s ...