kotlin demo

void->unit

// ,/* */

if (a > b) a else b

当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空。安全调用操作符,写作 ?.如果 b 非空,就返回 b.length,否则返回 null。链式调用:如果任意一个属性(环节)为空,这个链式调用就会返回 null。 安全调用也可以出现在赋值的左侧。这样,如果调用链中的任何一个接收者为空都会跳过赋值,而右侧的表达式根本不会求值。item?.let { println(it) } // 输出 Kotlin 并忽略 null。?:。请注意,因为 throw 和 return 在 Kotlin 中都是表达式,所以它们也可以用在 elvis 操作符右侧。eg:val name = node.getName() ?: throw IllegalArgumentException("name expected")。

println换行打印

when (x) {

1 -> print("x == 1")

2 -> print("x == 2")

else -> { // 注意这个块

print("x is neither 1 nor 2")

}

}

when (x) {

in 1..10 -> print("x is in the range")

in validNumbers -> print("x is valid")

!in 10..20 -> print("x is outside the range")

else -> print("none of the above")

}

fun hasPrefix(x: Any) = when(x) {

is String -> x.startsWith("prefix")

else -> false

}

关于Iterator主要有三个方法:hasNext()、next()、remove() hasNext:没有指针下移操作,只是判断是否存在下一个元素 next:指针下移,返回该指针所指向的元素 remove:删除当前指针所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素

eg:Iterator  iterator = keySet.iterator();
        
        while (iterator.hasNext()) {
            String  key = (String) iterator.next();
            System.out.println(key);
        }

如需在数字区间上迭代,请使用区间表达式:

for (i in 1..3) {

println(i)

}

for (i in 6 downTo 0 step 2) {

println(i)

}

对区间或者数组的 for 循环会被编译为并不创建迭代器的基于索引的循环。

如果你想要通过索引遍历一个数组或者一个 list,你可以这么做:

for (i in array.indices) {

println(array[i])

}

或者你可以用库函数 withIndex:

for ((index, value) in array.withIndex()) {

println("the element at $index is $value")

}

the element at 0 is a the element at 1 is b the element at 2 is c

return@a 1意为“返回 1 到 @a”,而不是“返回一个标签标注的表达式 (@a 1)”

或者,我们用一个匿名函数替代 lambda 表达式, 匿名函数内部的 return 语句将从该匿名函数自身返回

fun foo() {

val ints = arrayOf(1, 2, 3, 4, 5, 6)

ints.forEach(fun(value: Int) {

if (value == 0) return

print(value)

})}

类型名Array<String>

表达式与语句的区别:语句是可以单独执行的、能够产生实际效果的代码;而表达式则是包含在语句中,根据某种条件计算出一个值或得出某种结果,然后由语句去判断和处理的代码。

如果不打算传入值参,可以预先给参数指定默认值。fun fix(name: String,age: Int = 2){}.如果使用命名值参,就可以不管值参的顺序。eg:fix(age=4,name=”jack”)

内联类:不能传递内联类的实参替代函数中基础类型的形参,不能传递基础类型的实参替代函数中内联类类型的形参

泛型类:T是类型占位符

泛型与可变参数结合:

class MagicBox<T:Human>(vararg item:  T){

private var subject:Array<out T>=item

xx

}

扩展函数:接触不到也继承不了类的情况下可以给他增加功能。具体就是在函数名前面加一个”类名.”就行了

泛型扩展函数:在函数名前面加一个”<T>T.”就行了.

扩展属性:在变量名前加一个”类名.”并且要给这个属性设定get()=xxx

可空类型扩展函数:fun String?.printWithDefault(default: String)=print(this ?: default)

/*SDK诠释

SDK是一系列程序接口,文档,开发工具的集合。sdk即单单不是一个开发工具,也不是一个程序。一个完整的SDK应该包括以下内容:

(1)接口文件和库文件

接口文件和库文件就是API,将底层的代码进行封装保护,提供给用户一个调用底层代码的接口;

(2)帮助文档

帮助文档解释接口文件和库文件功能,以及介绍相关的开发工具,操作示例等等;

(3)开发示例

开发示例就是做出来的一个DEMO展示,也要包括源代码;

(4)实用工具。

实用工具是用来协助用户进行二次开发的工具,比如二次开发向导、API 搜索工具、软件打包工具等。*/

infix

kotlin demo相关推荐

  1. 从零开始撸一个Kotlin Demo

    ####前言 自从google将kotlin作为亲儿子后就想用它撸一管app玩玩,由于工作原因一直没时间下手,直到项目上线后才有了空余时间,期间又由于各种各样烦人的事断了一个月,现在终于开发完成 项目 ...

  2. Android 渐变的‘TabLayout’ , (含免费( java / kotlin) Demo)

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 ⚠️ : 本篇'由简入奢',全是干货! 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 绘制文字与BaseLin ...

  3. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  4. Kotlin项目实践指南(上)

    关于作者 郭孝星,程序员,吉他手,主要从事Android平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提issue或者发邮件至guoxiaoxingse@163.com与我交流 ...

  5. Kotlin 资源大全

    官网及文档 Kotlin 官网 Kotlin 文档 Kotlin 中文文档 Kotlin on GitHub 中文社区 掘金技术社区 教程 & 文章 视频教程 Kotlin 系列视频教程 开始 ...

  6. 现学现用Android Jetpack - Navigation

    前言 即学即用Android Jetpack系列Blog的目的是通过学习Android Jetpack完成一个简单的Demo,本文是即学即用Android Jetpack系列Blog的第一篇. 记得去 ...

  7. Android Context使用详解

    一.Context概述 1.Context是一个抽象类,其通用实现在ContextImpl类中.它的主要作用是一个访问application环境全局信息的接口,包括为Activities, Fragm ...

  8. Gson直接将json转list示例 (TypeToken)以及通过内联函数结合reified简化代码

    为了演示,我们新建一个简单的数据类Person 数据类Person data class Person(var name: String = "", var age: Int = ...

  9. Android Jetpack从入门到精通(深度好文,值得收藏)

    前言 即学即用Android Jetpack系列Blog的目的是通过学习Android Jetpack完成一个简单的Demo,本文是即学即用Android Jetpack系列Blog的第一篇. 记得去 ...

最新文章

  1. 解决tensorflow报错ValueError: Variable conv1/weights already exists, disallowed.
  2. 用无人机打点作画,密集恐惧症患者慎入!
  3. 「镁客·请讲」摩簦伞易新宇:对共享雨伞的不同理解,让他们玩法也和他人不同...
  4. 使用脚本进行 SAP Spartacus 安装工作
  5. 云测试软件详解,软件测试之登录测试详解
  6. python3.7安装pyqt4_Windows下PyQt4的安装(本文已过期)
  7. 【华为云技术分享】弹性负载均衡服务助力企业应对高并发流量冲击
  8. linux中设备文件的主要内容包括什么,LINUX期末考试复习题.doc
  9. Java讲课笔记35:初探泛型
  10. 手机闪存速度排行_2020年双十二3000-4000元高性价比手机推荐!
  11. 查看磁盘I/O操作信息
  12. UnderWater+SDN论文之六
  13. Mysql查询某列最长字符串记录
  14. java键盘钩子_jna test【鼠标 键盘钩子】
  15. linux找不到fastboot驱动下载,fastboot 刷机傻瓜教程
  16. 不同尺度下耕地土壤Cr含量的空间自相关性分析
  17. 幼儿园网络图怎么绘制_如何设计幼儿园主题网络图
  18. MindManager22全新版思维导图软件工具
  19. Rust 闭包学习 (Fn/FnMut/FnOnce)
  20. python实现输入一个字符串,输出每个字符的ASCLL码形成的列表

热门文章

  1. java毕业设计基于JS的租房网站mybatis+源码+调试部署+系统+数据库+lw
  2. 小学生加减法出题神器c语言编程,小孩我要当学霸(小学加减法出题器)
  3. 计算机一级考试操作题在线练习,计算机一级考试Photoshop练习题(带答案)
  4. 用Jupyter练习pytroch时, 用matplotlib结果内核崩溃
  5. java日历事件处理_18个Java8日期处理的实践,太有用了
  6. Flightradar24 让你实时跟踪全世界飞行航班
  7. 面试字节跳动,死在了最后一类问题上!
  8. 艾克主页秀 2005 水晶版 免费下载
  9. 记录阿里内推面试经历---第一次面试经历,找工作的第一步
  10. 数据分析--读取.txt文件