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++学习之函数指针 和数据项类似,函数也有地址,函数的地址是存储在机器语言代码的内存的开始地址.通常,这些地址对用户而言,不重要也没什么用处,但对程序而言,它却很有用. 一.函数 ...
随机推荐
- react 详细解析学习笔记
React的介绍: React来自于Facebook公司的开源项目 React 可以开发单页面应用 spa(单页面应用) react 组件化模块化 开发模式 React通过对DOM的模拟 ...
- 【leetcode】1138. Alphabet Board Path
题目如下: On an alphabet board, we start at position (0, 0), corresponding to character board[0][0]. Her ...
- A1042
洗牌,共洗k次,每次将将原先的牌洗进输入好的位置. 步骤: 1 设置次数k,输入位置数列next[55],填充初始牌序start[55]: 2 end[next[i]]=start[i]把新的牌序赋值 ...
- 前端node面试题之---对比JS和NodeJS的区别
区别: 1.JS运行在浏览器端,用于用户的交互效果,NodeJS运行在服务器端,用于服务器的操作,例如,Web服务器创建,数据库的操作,文件的操作等 2.JS运行在浏览器端,存在多个JS解释器,存在兼 ...
- JS循环结构
什么是循环结构? 反复一遍又一遍做着相同(相似)的事情 循环结构的两大要素? 循环条件:什么时候开始,什么时候结束 循环操作:循环体,循环过程中 做了什么 一.while语句 while语句 属于前测 ...
- Deque 容器
1.Deque (1)定义 deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容.deque容器类与vector类似,支持随机访问和快速插入删除, ...
- 【JOI2017春季合宿】Port Facility
http://uoj.ac/problem/356 题解 思路和\(NOIP\)双栈排序差不多. 对于两个元素,若\(l_1<l_2<r_1<r_2\)那么它们不能在一个栈里,我们连 ...
- 从源码编译UE4,加快Setup.bat下载文件的环节
之前很傻,每次运行这个setup.bat都要等很久很久才能把4g多的东西下载完成,知道有一天突然发现了世外桃源…… 从命令行运行setup.bat -help,可以看到参数的说明(没错,参数可选,之前 ...
- ThreadLocal在Spring事务管理中的应用
ThreadLocal是用来处理多线程并发问题的一种解决方案.ThreadLocal是的作用是提供线程的局部变量,在多线程并发环境下,提供了与其他线程隔离的局部变量.通常这样的设计的情况是因为这个局部 ...
- benchmarks
系统性能测试 stream SPARK 测试 streaming benchmark https://github.com/yahoo/streaming-benchmarks