IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Kotlin学习:4.2.函数 -> 正文阅读

[移动开发]Kotlin学习:4.2.函数

基础用法

    fun 函数名(参数名:参数类型):返回值类型{
        函数体
    }
    fun getTag(str: String): String {
        return "ViewUtils$str"
    }

多个参数,逗号分割

中辍表示法(中辍函数)

定义:就是将函数名称放在两个操作数中间,这二个操作数,左侧是包含函数的对象或者值,右侧是函数的参数值。

并不是所有的函数都支持中辍表达式,必须满足以下条件:

  1. 成员函数或者扩展函数
  2. 只有一个函数
  3. 使用infix关键字声明函数

//String 的扩展函数
infix fun String.builder(str: String): String {
    return StringBuilder(this).append(str).toString()
}

infix fun String.buffer(str: String): String {
    return StringBuffer(this).append(str).toString()
}

调用:

        println("1223 - ".buffer("123"))

		输出:2022-02-11 10:31:19.324 10633-10633/com.example.kotlintestdemo I/System.out: 1223 - 123

栗2

infix fun String.拼接(str: String): String {
    return StringBuffer(this).append(str).append("好酷啊").toString()
}
 调用
        println("1223 - ".拼接("123"))
输出
2022-02-11 10:36:46.094 11013-11013/com.example.kotlintestdemo I/System.out: 1223 - 123好酷啊

kotlin 中缀函数:https://www.jianshu.com/p/d3c936659683?utm_campaign=haruki

函数参数

1.Spacal 标记法

name : type 格式

2.可以设置默认值

    fun <T> getTitleSize(list: Array<T>, default: Int = 3): Int {
        return if (list.isEmpty()) {
            default
        } else {
            list.size
        }
    }

调用

        println("获得标题头的数量 == ${getTitleSize(arrayOf("标题头1", "标题头2", "标题头3", "标题头4"))} ")
        println("获得标题头的数量 == ${getTitleSize(emptyArray<String>())} ")
        println("获得标题头的数量 == ${getTitleSize(emptyArray<String>(),9)} ")

输出:

2022-02-11 10:53:39.202 12593-12593/com.example.kotlintestdemo I/System.out: 获得标题头的数量 == 4 
2022-02-11 10:53:39.202 12593-12593/com.example.kotlintestdemo I/System.out: 获得标题头的数量 == 3 
2022-02-11 10:53:39.203 12593-12593/com.example.kotlintestdemo I/System.out: 获得标题头的数量 == 9 

3.可变参数 varage

3.1.可变参数对比Java,类似

void asList(T... t){}

3.2.可变参数 varage 用例

    fun <T> asList(vararg ts: T): List<T> {
        val result = ArrayList<T>()
        for (t in ts) result.add(t)
        return result
    }

调用

asList(1,"223",3)

ts 理解成数值

3.3.varage 要求

一个函数一个varage参数;

varage参数不能直接做返回值;

3.4.可变参数作为下个函数的参数时

varage如果要传给别的函数,需要在当前参数名称面前加 *(伸展操作符)

    fun foo(vararg args: String) {
        bar(*args)
    }

    fun bar(vararg args: String) {
        
    }

3.5.可变参数和其他参数一起使用时

    fun <T> asList(vararg ts: T, tag: String): List<T> {
        val result = ArrayList<T>()
        for (t in ts) result.add(t)
        return result
    }

如上这种结构出现时,调用时需要:

        asList(1, "223", 3, tag = "233")

明确 tag = 多少,否则编译错误

Kotlin中可变参数:https://www.jianshu.com/p/174c0e254713

函数作用域

函数的定义方法不同,函数的作用域也不同

顶层函数

局部函数

函数体内的函数

成员函数

泛型函数

函数名称前有泛型

<T> 

扩展函数

函数的返回值

函数的返回值始终需要显式的指定,除非没有返回值,没有返回值的时候用Unit表示

尾递归函数

如果某个函数的末尾又调用了函数自身,这种就称为尾递归函数。尾递归函数需要在 fun 前面添加 tailrec。

如下:

tailrec fun findFixPoint(x: Double = 1.0): Double
= if (x == Math.cos(x)) x else findFixPoint(Math.cos(x))

等价于

fun findFixPoint(x: Double = 1.0):Double{
	while(true){
		val y = Math.cos(x)
		if (x == y) return x
		x = y
	}
}

上面函数将调用自身作为其执行体的最后一行代码,且递归调用后没有更多代码,因此可 以将该函数改为尾递归语法。

单函数表示法

   fun d(x:Int):Int=x*2

如果函数体只有一条语句,而且是return语句,那么可以省略大括号以及return关键字,

参考地址

《Kotlin 入门与实战》

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:26:11  更:2022-03-03 16:26:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 17:00:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码