文章目录

  • 一、基本用法
  • 二、使用中缀标记法调用函数
  • 三、单表达式函数
  • 四、函数参数和返回值
    • 4.1、可变参数
    • 4.2、返回值类型
一、基本用法

  Kt函数必须使用fun关键字开头,后面紧跟函数名,以及一对小括号,小括号是函数参数列表,如果函数有返回值,在小括号后面加冒号,冒号后面是函数返回值类型。


/*** 函数的标准定义*/
fun double(x : Int) : Int{return 2 * x
}

在Kt中调用函数,函数名后面是小括号,小括号中是要传递的函数参数值

 var result = double(2)

如果是调用成员函数,需要使用点(.)

Sample().foo()  首先会实例化Sample,然后调用foo函数
二、使用中缀标记法调用函数

使用中缀标记法调用函数

  • 中缀标记法:就是将函数名称放在两个操作数中间,左侧是包含函数的对象或者值,右侧是函数的参数值
  • 中缀标记法函数满足条件
    1、成员函数或者拓展函数
    2、只有1个参数
    3、使用infix关键字声明函数
infix fun String.div(str : String) : String{return this.replace(str,"") //将当前字符串中的所有Str替换为“”
}
var str = "hello world"//一般方法调用div函数println(str.div("l"))//使用中缀标记法println(str div "l")//中缀标记法连续使用println(str div "l" div "o")
三、单表达式函数
  • 单表达式函数
       如果一个函数的函数体只有一句语句,而且是return语句,可以省略函数体的打括号和return关键字。return后面的表达式可以直接写在函数声明的后面,用等号与函数声明分割。
fun triple(x : Int) : Int = x * 3

Kt编译器可以推断出等号右侧的表达式的类型,那么可以省略函数的返回值类型。

fun triple(x : Int) = x * 3
四、函数参数和返回值
4.1、可变参数

  一个函数的一个参数(一般是最后一个参数)可以标记为 vararg,这样会将该参数作为可 变参数处理。所谓可变参数,就是指可以任意多个参数,在函数内部,会按数组来处理这些参 数值。

/*** asList 函数是一个泛型函数,该函数只有一个参数,井且是可变参数* 该函数返 回 List<T>类型。 * asList函数的功能是将一组值转换为 List<T>对象,并返回该对象。*/
fun <T> asList(vararg ts : T) : List<T>{val result = ArrayList<T>()for (t in ts){result.add(t)}return result
}

调用:

//由于 ts 是可变参数,因此可以传递任意多个参数值,并且可以是任意类型的。/**在 asList 函数内部,类型为 T 的 vararg参数会被看作一个 T类型的数组,也就是说, asList 函数中的 ts变量的类型为 Array<outT>。*/var list = asList(1,2,"a",4,5)println(list)

  只有一个参数可以标记为 vararg。如果 V缸arg 参数不是函数的最后一个参数,那么对于 vararg参数之后的其他参数,可以使用命名参数语法来传递参数值,或者,如果参数类型是函 数,可以在括号之外传递一个 Lambda表达式。例如,下面的 asList 函数有 3 个参数,第 1 个 参数是可变参数,后两个是 valueI 和 value2 参数 。由于最后一个参数不是可变参数,因此在 传递 valueI 和 value2 参数的值时 需要使用命名参数

fun <T>  asList (vararg ts : T,value1 : Int,value2 : String) : List<T>{val  result = ArrayList<T>()for (t in ts)result.add(t)println("value1 = ${value1}  value2 = ${value2}")return  result
}

调用:

//使用命名参数传递value1  和value2参数的值var  list = asList(1,2,3 ,value1 = 2,value2 = "abc")println(list)

  调用一个存在 vararg 参数的函数时,我们可以逐个传递参数值,如 asList(l, 2, 3),或者, 如果我们已经有了一个数组,希望将它的内容传递给函数 ,可以使用展开( spread)操作符(在 数组之前加一个*):

val a = arrayOf(1,2,3)
val list= asList(-1, 0, *a, 4)
4.2、返回值类型

Kt学习笔记(10)函数相关推荐

  1. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  2. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  3. Hadoop学习笔记—10.Shuffle过程那点事儿

    Hadoop学习笔记-10.Shuffle过程那点事儿 一.回顾Reduce阶段三大步骤 在第四篇博文<初识MapReduce>中,我们认识了MapReduce的八大步骤,其中在Reduc ...

  4. Linux学习笔记10

    Linux学习笔记10 Linux学习笔记10 正则表达式 源码包约定目录 Shell脚本约定目录 Shell脚本的创建与执行 date命令 同步时间 Shell脚本预设变量 与用户交互 数学计算 S ...

  5. php中声明一个函数,php学习笔记之 函数声明

    /* 函数定义: * 1.函数是一个被命名的 * 2.独立的代码段 * 3.函数执行特定任务 * 4.并可以给调用它的程序返回一个值 * * 函数的优点: * 1.提高程序的重用性 * 2.提高程序的 ...

  6. HALCON 20.11:深度学习笔记(10)---分类

    HALCON 20.11:深度学习笔记(10)---分类 HALCON 20.11.0.0中,实现了深度学习方法. 本章解释了如何在训练和推理阶段使用基于深度学习的分类. 基于深度学习的分类是一种对一 ...

  7. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  8. 台大李宏毅Machine Learning 2017Fall学习笔记 (10)Tips for Deep Learning

    台大李宏毅Machine Learning 2017Fall学习笔记 (10)Tips for Deep Learning 注:本博客主要参照 http://blog.csdn.net/xzy_thu ...

  9. JAVA学习笔记五---函数

    JAVA学习笔记五---函数 5.1 方法的学习 编写一个程序,求圆的周长和面积. package practice; /*** 编写一个程序,求圆的周长和面积.* @author iszhangyo ...

  10. MySQL学习笔记—自定义函数

    MySQL学习笔记-自定义函数 注释语法: MySQL服务器支持3种注释风格: 从'#'字符从行尾. 从'– '序列到行尾.请注意'– '(双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如 ...

最新文章

  1. CountDownTimer的简单使用
  2. Vue开发入门看这篇文章就够了
  3. SAP alv 去掉标准按钮
  4. sql server try...catch使用
  5. bzoj2819: Nim(博弈+树剖)
  6. ccs 移植创建新工程_CCS新工程创建与配置
  7. vue css隐藏_Vue+BootStrapV4,构建响应式、移动优先项目——BootstrapVue
  8. Python知识点入门笔记——特色数据类型(字典)
  9. nodejs写的HTTP静态文件的引擎(轻量级)
  10. 1个app的完整测试用例_APP测试流程
  11. Windows使用ROS机器人操作系统12记录
  12. 10-5 查询选修张老师讲授所有课程的学生
  13. Win11搜索框恢复成放大镜
  14. #惊奇建模主仆见证了 Hobo 的离别
  15. Sketch插件介绍
  16. 大疆aeb连拍_不适合航拍?不如深度发掘大疆spark拍照功能
  17. 《微信读书》产品分析报告
  18. 上计算机课的日记100字,电脑课_作文100字_小学六年级作文_第一范文网
  19. (zhuan) 自然语言处理中的Attention Model:是什么及为什么
  20. 置信区间与显著性水平

热门文章

  1. javascript控制台_超越控制台日志3种在javascript中格式化控制台输出的方法
  2. matlab的数学函数,你知道多少MATLAB中的数学函数?
  3. 写一个函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空一个空格
  4. Docker版OnlyOffice镜像制作
  5. 河海大学MBA陈钢教授 开学讲座
  6. 业务为什么投诉了数据团队
  7. mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?...
  8. 细水长流,方能生生不息
  9. 【Hexler】Qt5 贪吃蛇
  10. python 嵌套_如何执行嵌套的python文件