Kotlin编程之五(函数定义与调用)
来源:互联网 发布:58同城合肥找美工 编辑:程序博客网 时间:2024/05/22 06:30
1、 集合的实例化跟初步使用
val list = arrayListOf("my", "name", "is", "list")list.add("678")//. 集合添加println("${list[0] + "__" + list.javaClass + "__" + list.first() + "__" + list.last() + "__" + list.get(1)}")val set = setOf(4, 2, 9)println("${set.elementAt(1).toString() + "__"+ set.javaClass}")val map = hashMapOf(1 to "one", 2 to "two", 3 to "three")println("${map[1] + "__" + map.javaClass}")//. 根据key取value值2、集合简单实现输出'(xx, gg, uu)'
函数:
/** * 输出 (xx; gg; uu) * @param collection:泛型集合 * @param separator:分隔符 * @param prefix:前缀 * @param postfix:后缀 * */fun <T> joinToString (collection: Collection<T>, separator: String, prefix: String, postfix: String): String { //. 使用StringBuilder类拼接字符串,先拼接前缀括号 val result = StringBuilder(prefix) for ((index, element) in collection.withIndex()) { //. 第一位文本无需用分隔符隔开 if (index > 0) result.append(separator) //. 在第一位文本后开始拼接分隔符 result.append(element) } //. 循环遍历完后拼接后缀括号 result.append(postfix) return result.toString()}
调用:
val list = arrayListOf("xx", "gg", "uu")println(joinToString(list, ";", "(", ")"))3、设置默认参数值,对于上面不是>=AS 3.0版本的,可能输入参数时会很混乱。当然可以声明全局的字符串变量:separator、prefix、postfix,但对于Kotlin有更加简便的方式,那就是对参数初始化(-->真是神奇啊),更是神奇的是参数可省略,具体代码如下
修改部分
fun <T> joinToString (collection: Collection<T>, separator: String = ";", prefix: String = "(", postfix: String = ")"): String {调用:
val list = arrayListOf("xx", "gg", "uu")println(joinToString(list))println(joinToString(list, ";"))4、
//. 如果不是常规的方法参数,就是初始化了的参数,那么可以这样再次赋值,代码可读性是不是更棒,nice\nice\niceprintln(joinToString(list, ";", prefix = "[", postfix = "]"))
5、在java类中调用Kotlin函数:
(1)新建Join.kt文件
package com.gm.kotlindemoclass JoinKt {}//. 写在类的外面-->即顶层fun <T> joinToString(collection: Collection<T>, separator: String = ";", prefix: String = "(", postfix: String = ")"): String { //. 使用StringBuilder类拼接字符串,先拼接前缀括号 val result = StringBuilder(prefix) for ((index, element) in collection.withIndex()) { //. 第一位文本无需用分隔符隔开 if (index > 0) result.append(separator) //. 在第一位文本后开始拼接分隔符 result.append(element) } //. 循环遍历完后拼接后缀括号 result.append(postfix) return result.toString()}(2)调用
List<String> strList = new ArrayList<>();strList.add("rr");strList.add("hh");strList.add("pp");Log.d(TAG, JoinKt.joinToString(strList, ";", "(", ")"));(3)输出:
D/日志: (rr;hh;pp)
(4)我们可以重新用不同类名调用
a、在Jion.kt包前面添加@file:JvmName("StringFunctions"):
@file:JvmName("StringFunctions")b、然后在java类中调用如下:
Log.d(TAG, StringFunctions.joinToString(strList, ";", "(", ")"));
6、顶层变量(只读变量、可变变量)(两个知识点同时应用)
(1)同样在Join.k类的顶层添加
//. 相当于java中的private static final String KT_LOG = "Kotlin日志";,同时val修饰的只有getterconst val KT_LOG = "Kotlin日志"//. 暴露给java的是一对getter跟settervar opCount = 0(2)在java类中调用
StringFunctions.setOpCount(12);Log.d(StringFunctions.KT_LOG, StringFunctions.getOpCount()+"");(3)输出
D/Kotlin日志: 12
7、导入包
(1)继承Kotlin的类下导入具体函数并重命名引用
//. 导入包具体函数并重命名引用import com.gm.kotlindemo.lastChar as last(2)调用
Log.d(TAG, "pig".last().toString())8、扩展函数__封装_例子
(1)对比之前的函数
/** * <T>用来声明泛型 * 扩展函数__封装 * */fun <T> Collection<T>.toMyString( separator: String = ";", prefix: String = "(", postfix: String = ")"): String { val result = StringBuilder(prefix) //. 不同之处在于之前是参入集合参数,现在是集合参数作为触发条件,调用toMyString,这里用this代替 for ((index, element) in this.withIndex()) { if (index > 0) result.append(separator) result.append(element) } result.append(postfix) return result.toString()}(2)调用
val list = listOf(1, 2, 3)Log.d(TAG, list.toMyString(separator = "_" , prefix = "[", postfix = "]"))9、指定类型调用封装函数
fun Collection<String>.join( separator: String = "、", prefix: String = "[", postfix: String = "]") = toMyString(separator, prefix, postfix)调用
Log.d(TAG, list.join())
阅读全文
0 0
- Kotlin编程之五(函数定义与调用)
- linux C编程(五)函数指针与函数调用
- C++编程入门系列之八(函数的定义与调用)
- JavaScript基础之函数定义与调用
- Kotlin函数式编程(一) Kotlin与函数式编程
- C++编程入门系列之九(函数的定义与调用
- 【C++基础之五】函数调用机制与调用约定
- 【C++基础之五】函数调用机制与调用约定
- 变量定义与函数调用
- 函数的定义与调用
- JavaScript 函数定义与调用
- 函数的定义与调用
- kotlin_函数定义与调用
- 《Kotlin 程序设计》第六章 Kotlin 函数式编程(FP)
- (转)Python 函数之函数定义、调用、传参
- Kotlin入门篇(五),Loop和Range,Kotlin中区间的定义和遍历
- linux系统编程之文件与I/O(五):fcntl 函数与文件锁
- java8函数式编程之五--lambda表达式与流
- JAVA 通过 Socket 实现 TCP 编程
- Oracle:关于安装oracle中踩得坑以及plsql的安装使用中的坑
- Struts2的配置文件加载顺序及常用常量名及更改方法、注意事项
- GitHub开源控件的使用合集
- swing之mvc模式
- Kotlin编程之五(函数定义与调用)
- window下phpstudy的nginx配置虚拟主机
- 解决linu apt-get update 问题
- vue前端UI库
- PhpStorm中快捷键总结,附详细使用说明
- c#写服务、exe 可执行程序、windows锁屏的过程中遇到的问题
- jvm组成区域及个区域
- 重装 11G(11.2.0.4) 组件总结(手工建库组件的安装顺序)
- 9.NoSQL数据库第1部分