定义函数

  1. fun sum(a: Int, b: Int): Int {
  2. return a + b
  3. }

该函数中两个参数的类型都是Int,返回类型是Int

也可以做如下简化

  1. fun sum(a: Int, b: Int) = a + b

将表达式作为函数体、返回值类型自动推断

当函数没有返回值时,返回类型是Unit

  1. fun printInt(i: Int): Unit {
  2. println("The value of i is $i.")
  3. }

Unit可以省略

定义变量

定义只读局部变量使用关键字val,只能为其赋值一次

可重新赋值的变量使用var关键字

使用可空值及null检测

  1. fun parseInt(s: String): Int? {
  2. try {
  3. return Integer.parseInt(s)
  4. } catch (ex: NumberFormatException) {
  5. LOGGER.log(Level.SEVERE, null, ex)
  6. return null
  7. }
  8. }

当某个变量的值可以为null的时候,必须在声明处的类型后添加?来标识该引用可为空

因为这段代码中函数可能返回null,所以返回类型Int后的?是必要的,否则会导致编译错误

  1. fun test(s1: String, s2: String) {
  2. val x = parseInt(s1)
  3. val y = parseInt(s2)
  4. if (x == null || y == null) {
  5. println("either 's1' or 's2 is not a number")
  6. } else {
  7. println("x * y: ${x * y}")
  8. }
  9. }

由于parseInt返回类型为Int?,即可能返回null,所以x和y都有可能为null

必须对x、y进行null检测才能使用x * y,否则会导致编译错误

参考站点:基本语法 - Kotlin 语言中文站

P.S.

对于Kotlin的发音,可以参考HOW PRONOUNCE KOTLIN! (BEST QUALITY VOICES) - YouTube

我用的IDE是IntelliJ IEDA,下载地址Download IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains

Kotlin基本语法笔记之函数、变量的定义及null检测的更多相关文章

  1. Kotlin基本语法笔记3之定义类、继承及创建实例

    定义类 class MyObject private constructor(name: String, age: Int) { private var name: String private va ...

  2. Kotlin基本语法笔记2之类型检测及自动类型转换、循环

    类型检测及自动类型转换 is运算符用于检测一个表达式是否为某类型的一个实例检测出为某类型后,检测后的分支中可以直接当作该类型使用,无需显示转换 fun getStringLength(obj: Any ...

  3. 罗云彬win32汇编教程笔记 子函数的声明, 定义与调用

    在主程序中用call指令来调用子程序. Win32汇编中的子程序也采用堆栈来传递参数,这样就可以用invoke伪指令来进行调用和语法检查工作. 一. 子程序的定义 子程序的定义方式如下所示. 子程序名 ...

  4. Kotlin基础语法学习

    Kotline简介 Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源.与Java相比,Kotlin的语法更简洁.更具表达性,而且提供了更多的特性,比如,高阶函 ...

  5. 《疯狂Kotlin讲义》读书笔记6——函数和Lambda表达式

    函数和Lambda表达式 Kotlin融合了面向过程语言和面向对象语言的特征,相比于Java,它增加了对函数式编程的支持,支持定义函数.调用函数.相比于C语言,Kotlin支持局部函数(Lambda表 ...

  6. python学习笔记(3)--函数、参数、变量、递归

    1.函数基本语法和特性 背景摘要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏出了所有的知识量吗,写出了以下代码 whi ...

  7. JavaScript学习笔记-基础语法、类型、变量

    基础语法.类型.变量   非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...

  8. Python学习笔记:函数和变量详解

    一.面向对象:将客观世界的事物抽象成计算机中的数据结构 类:用class定义,这是当前编程的重点范式,以后会单独介绍. 二.函数编程:逻辑结构化和过程化的一种编程方法 1.函数-->用def定义 ...

  9. Kotlin 特性 语法糖 优势 扩展 高阶 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. 21深入理解C指针之---通过指针传递数据

    一.在C程序设计中,主要活动就是操纵数据 1.数据传递:将数据作为参数传入参数和将数据作为数据返回两种 2.函数: 1).函数类型:主要是指函数返回数据的类型,可以是基本类型或复杂数据类型,即使函数无 ...

  2. [深入学习C#]C#实现多线程的方式:Task——任务

    简介 .NET 4包含新名称空间System.Threading.Tasks,它 包含的类抽象出了线程功能. 在后台使用ThreadPool. 任务表示应完成的某个单元的工作. 这个单元的工作可以在单 ...

  3. LeetCode OJ--Single Number

    https://oj.leetcode.com/problems/single-number/ 给一个数列,其中只有一个数不是两两相同的,在O(n)时间内求出来,并且不使用额外空间. 使用异或操作,如 ...

  4. 字蛛(font-spider)-单独压缩字体(解决页面少有的特殊字体的字体包引用)

    特别想独立的把这个问题写成一篇内容,分享给大家. 反正我是这个字体压缩使用的受益者,不是打广告. 很久以前,设计师总是爱用一些奇奇怪怪的字体放在页面上,而作为前端我们很容易的就能直接使用TA们用到的字 ...

  5. Xcode文件名后的字母含义

    Xcode文件名后的字母含义   在Xcode中,左侧的dock区域显示项目结构.很多时候,文件名后方会出现一个字母提示,如M.A之类的.这实际是一种提示符号.如果项目中使用SVN.Git等版本控制工 ...

  6. 浅析 JavaScript 中的闭包(-------------------------------------------)

    一.前言 对于 JavaScript 来说,闭包是一个非常强大的特征.但对于刚开始接触的初学者来说它又似乎是特别高深的.今天我们一起来揭开闭包的神秘面纱.闭包这一块也有很多的文章介绍过了,今天我就浅谈 ...

  7. nopCommerce从无到有01-初探nopCommerce

    nopCommerce框架的基本结构: 该结构可以参考DDD(领域驱动设计)模式. (注:上图源自他人文章,具体出处不祥,在此引用,感谢原创) nopcommerce官方地址:http://www.n ...

  8. Maven plugin提示错误“Plugin execution not covered by lifecycle configuration”

    myeclipse在其POM文件的一处提示出错如下: Plugin execution not covered by lifecycle configuration: org.apache.maven ...

  9. 【Unity3D自学记录】Unity3D之自制小钟表

    今天来写一个小钟表,事实上非常easy,就运用到了欧拉角. 首先创建时钟.分钟.秒钟以及4个点(12点.3点.6点.9点)偷懒了~~没弄那么多点. 时钟.分钟.秒钟这三个父级的中心一定要注意,我们旋转 ...

  10. Odoo车辆管理

    odoo车辆管理用于管理公司用车,可以记录以下信息 车辆 车辆的服务合同 车辆的里程 车辆的服务记录 车辆的成本         使用之前,先要进行基本设置     基础设置 维护车辆型号 即维护车辆 ...