关于我这周的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,声明 ...
随机推荐
- 【C#】【平时作业】习题-5-类的基础知识
一.概念题 1. 举例说明什么是类,什么是对象,并说明类与对象的关系? 类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类. 对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还 ...
- Qt音视频开发23-视频绘制QPainter方式(占用CPU)
一.前言 采集到的图片,用painter绘制是最基础的方式,初学者可能第一次尝试显示图片用的qlabel的setpixmap,用下来会发现卡成屎,第二次尝试用样式表设置背景图,依然卡成屎,最终选用pa ...
- Qt编写linux上视频流播放器(支持海康大华宇视等各种网络摄像机)
一.前言 在windows上的视频流播放器有很多,而且各个监控厂家无论大厂还是小厂,基本上都提供了客户端,甚至很多第三方的监控平台软件厂商,也都提供了windows的版本,基本的都没有提供linux版 ...
- Qt编写跨平台RTSP/RTMP/HTTP视频流播放器
一.前言 很早以前就做过这款播放器的入门版本,最开始用的ffmpeg去解析,后面陆续用vlc播放器.mpv播放器来做,毕竟播放器提供的接口使用也很方便,而且功能强大,后面发现播放器主要的应用场景是播放 ...
- Qt编写物联网管理平台47-通用数据库设置
一.前言 为了做这个通用的数据库组件,专门安装了虚拟机来安装各种版本的不同类型的数据库做测试,包括编译对应的数据库插件,我一直坚信的是一切从实际出发+有实际采用发言权,包括不同Qt版本编译mysql. ...
- Qt编写地图综合应用28-闪烁点图
一.前言 Qt除了内置了各种UI组件以外,还直接集成了浏览器控件,注意哦这可是跨平台的浏览器控件哦,在5.6版本以前集成的是webkit,以后集成的是webengine,使得程序的灵活性拓展性大大增强 ...
- Qt音视频开发40-人脸识别离线版
一.前言 上一篇文章写了在线调用人脸识别api进行处理,其实很多的客户需求是要求离线使用的,尤其是一些事业单位,严禁这些刷脸数据外泄上传到服务器,尽管各个厂家号称严格保密这些数据,但要阻止这些担心,唯 ...
- 记一次 .NET某汗液测试机系统 崩溃分析
一:背景 1. 讲故事 上个月在社区写的文章比较少,一直关注的朋友应该知道那段时间被狗咬了以及一些琐事处理,所以手头上也攒了不少需要分享的案例,这段时间比较空闲,逐个给大 家做个分享吧,刚好年后为新版 ...
- Python并发总结:多线程、多进程与异步编程
随着多核的发展,Python中并发编程也变得越来越广泛且发展很快. 一方面,Python提供了多种并发编程工具. 比如,传统的多线程,通过threading模块方便地创建和管理线程,可用于I/O密集型 ...
- 关于前端上传excell时间的问题
当前端导入excell里的数据时,只能获取到下面类似的这种数据 Excel存储的日期是从1900年1月1日开始按天数来计算的,也就是说1900年1月1日在Excel中是1. 转化的思路和对Excel中 ...