Kotlin学习(2)函数
函数声明:
fun plus(a:Int,b:String):Boolean{ //fun 函数名(参数名:参数类型,参数名:参数类型):返回值类型
println(a)
return true //返回值
}
集合:
Kotlin可以使用Java声明集合的方法,也有自己的声明方式。
//Java方式
val a=ArrayList<Int>() //Kotlin方式
val b=arrayListOf<Int>()
顶层函数和属性:
Kotlin中没有static修饰符。
为了消除静态工具类,Kotlin可以将函数或者属性写在 .kt 文件中,类的外面。
类似于C语言中全局变量,如果是public属性(省略的话默认public),其他类可以直接使用这个变量(函数),不必声明。
扩展函数和属性:
Kotlin支持在原有类的外面扩展自己想要的方法,比如我想给String对象添加一个可以获得最后一个字母的方法,不需要再去写一个类继承String,然后添加方法。
fun main(args: Array<String>) {
println("Kotlin".lastChar())
}
//扩展函数
fun String.lastChar():Char{
return this.get(this.length-1)
}
//扩展属性
fun String.lastChar:Char
get()=get(length-1)
为了防止偶然的命名冲突,使用扩展函数需要导入扩展函数。
Kotlin中import可以导入一个类,也可以导入一个函数,比如扩展函数是Strings包中的顶层函数,可以 import Strings.lastChar ,当然也可以使用 * 来导入包中所有内容。
扩展函数必须是顶层函数。不能写在类内部。
扩展函数的静态属性决定了扩展函数不能被子类重写。
可变参数:
fun main(args: Array<String>) {
bb(1,2,3,4,5)
}
fun bb(vararg a:Int){
for (i in a){
println(i)
}
}
局部函数:
Kotlin允许在函数内声明局部函数,用以避免大量的重复操作。
Kotlin学习(2)函数的更多相关文章
- Kotlin入门(9)函数的基本用法
上一篇文章介绍了Kotlin新增的空安全机制,控制语句部分可算是讲完了,接下来将连续描述Kotlin如何定义和调用函数,本篇文章先介绍函数的基本用法. 前面几篇文章介绍控制语句之时,在setOnCli ...
- Kotlin 学习笔记(一)
(Kotlin 学习笔记的文档结构基本按照 Java 核心技术一书的目录排列) 基本程序设计结构 数据类型 数字 类型 宽度 Double 64 Float 32 Long 64 Int 32 Sho ...
- Kotlin高阶函数与函数式编程详解
函数可变参数: 在上一次https://www.cnblogs.com/webor2006/p/11518425.html中学到了可变参考,关于可变参数有如下规则说明: “一个方法中,只允许一个参数为 ...
- Kotlin学习笔记(9)- 数据类
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安 ...
- Kotlin高阶函数实战
前言 1. 高阶函数有多重要? 高阶函数,在 Kotlin 里有着举足轻重的地位.它是 Kotlin 函数式编程的基石,它是各种框架的关键元素,比如:协程,Jetpack Compose,Gradle ...
- Kotlin学习快速入门(7)——扩展的妙用
原文地址: Kotlin学习快速入门(7)--扩展的妙用 - Stars-One的杂货小窝 之前也模模糊糊地在用这个功能,也是十分方便,可以不用继承,快速给某个类增加新的方法,本篇便是来讲解下Kotl ...
- Kotlin语法(函数和lambda表达式)
三.函数和lambda表达式 1. 函数声明 fun double(x: Int): Int { } 函数参数是用 Pascal 符号定义的 name:type.参数之间用逗号隔开,每个参数必须指明类 ...
- JavaScript学习09 函数本质及Function对象深入探索
JavaScript学习09 函数本质及Function对象深入探索 在JavaScript中,函数function就是对象. JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念 ...
- C++学习之函数指针
C++学习之函数指针 和数据项类似,函数也有地址,函数的地址是存储在机器语言代码的内存的开始地址.通常,这些地址对用户而言,不重要也没什么用处,但对程序而言,它却很有用. 一.函数 ...
随机推荐
- django之logo日志的配置和使用
一:为什么使用日志 假如,在项目调试过程中,在某些地方加上了print()函数,输出了一些调试信息.在项目上线的时候,不要将调试信息暴露出去,但是调试信息还要用,该怎么办?项目测试运行在远端服务器上, ...
- vue 常见错的可能原因
标签或者组件名写错 Unknown custom element: <h> - did you register the component correctly? For recursiv ...
- 使用IDEA连接mysql数据库
1.IDEA配置数据库连接 2.添加数据库: 3.填写数据库信息: database输入框里面填写要连接的数据库名称 然后点击test connection,会弹出一个框,提示下载驱动,点击进行下载即 ...
- 认识js数组
1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数 ...
- 父页面和iframe之间的通信(操作和传值问题)
一.jq实现iframe父页面与子页面传值与方法调用 1.值操作 (1)父页面获取子页面的值 $('iframe的id').contents().find(子页面的id).text(); (2)子页面 ...
- Laya layout算法
/** * <p>重置对象的 <code>X</code> 轴(水平方向)布局.</p> * @private */ public function r ...
- cf 118B
B. Present from Lena time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- php调接口批量同步本地文件到cos或者oss
代码: <?php namespace Main\Controller; use Common\Library\Vendor\ElasticSearch; use Common\Library\ ...
- [CSP-S模拟测试]:砍树(数学+模拟)
题目传送门(内部题1) 输入格式 第一行两个整数$n$,$k$,代表树苗的数量和最大看书的总长度.第二行n个整数$a_i$,代表林先森希望每棵树苗的最终高度. 输出格式 一行一个整数,代表最大可能的d ...
- 文档流&文字&CSS常用命令
文档流 文档流就是文档内元素流动方向 流动方向 内联元素从左往右流,宽度不够,之字形,且元素会被截断 块元素从上往下流动,一排一排 注意事项 内联元素中有英文单词,流动时宽度不够,英文单词会整体迁移, ...