定义函数

Kotlin定义一个函数的风格大致如下

访问控制符 fun 方法名(参数,参数,参数) : 返回值类型{
...
...
}
  • 访问控制符:与Java有点差异,Kotlin的访问范围从大到小分别是public、internal、protected、private,不声明默认是public;
  • 返回值类型:不需要返回类型的函数,后面的 : 返回值类型可以缺省(这里可以看到无论是变量还是方法,Kotlin都喜欢名字在前,类型在后);
/***Kotlin版代码***/
//有返回参数的函数
fun getName(): String {
return "Kotlin"
}
//无返回参数的函数
fun displayName(name: String) {
println("name: $name")
}
/***Java版代码***/
public String getName() {
return "Java";
}
public void displayName(String name) {
System.out.println("name: " + name);
}

相比Java,Kotlin支持包级函数,即函数不依赖于类而存在。

/***Kotlin版代码***/
package lesson1
/**
* Created by Clock on 2017/6/18.
*/
fun main(args: Array<String>) {
println("Kotlin")
}
/***Java版代码***/
package lesson1;
/**
* Created by Clock on 2017/6/18.
*/
public class Lesson1 {
public static void main(String[] args) {
System.out.println("Java");
}
}

对比上面的代码,Java创建一个方法前还需要先创建一个类。刚开始安装IntelliJ IDEA编写代码时,我还有个疑惑,为什么有创建Kotlin File/Class两个选择,到这里就明白了。

参数变长

Kotlin的参数变长非常简单,传递的参数使用关键字vararg标明即可

/***Kotlin版代码***/
//参数变长
fun displayActors(vararg name: String) {
println("actors: " + name);
}
/***Java版代码***/
public void displayActors(String... name) {
System.out.println("actors :" + name);
}

相比Java,变长参数在Kotlin代码中要常见很多。
静态变量和函数

Kotlin没有Java中的static概念,如果在Kotlin中需要像Java一样定义静态变量和函数可以使用companion object,companion object后可以加上自定义的object名,也可以省略。

/***Kotlin版代码***/
class KotlinStatic {
companion object Test {
var kotlinInt: Int = 0
fun getInstance(): KotlinStatic {
return KotlinStatic()
}
}
}
/***Java版代码***/
public class Lesson1 {
public static int javaInt = 0;
public static Lesson1 getInstance() {
return new Lesson1();
}
}

这样在需要使用的地方就可以做如下调用了

package lesson0
import lesson1.KotlinStatic
/**
* Created by Clock on 2017/6/17.
*/
fun main(args: Array<String>) {
println("Hello, world!")
KotlinStatic.kotlinInt
KotlinStatic.getInstance()
}

虽然看起来companion object实现了类似Java中static一样的功能,但与Java不同的是,Kotlin在运行时是会创建一个companion object实例对象。在Kotlin中,如果真的想要实现和Java中的static变量或函数,官方更推荐使用包级别的变量或函数来实现。

返回 Unit 的函数

如果一个函数不返回任何有用的值,它的返回类型是 Unit 。 Unit 是一种只有一个值 —— Unit 的类型。这个值不需要显式返回

fun printHello(name: String?): Unit {
if (name != null)
println("Hello ${name}")
else
println("Hi there!")
// `return Unit` 或者 `return` 是可选的
}

Unit 返回类型声明也是可选的。上面的代码等同于

fun printHello(name: String?) {
……
}

代码注释

正如 Java 和 JavaScript,Kotlin 支持行注释及块注释。

// 这是一个行注释

/* 这是一个多行的
块注释。 */ 与 Java 不同的是,Kotlin 的块注释可以嵌套。就是说,你可以这样注释:
/**
* hhhh
* /**
* fff
* /**
* ggggg
* */
* */
*
* abc
*
*/
 

Kotlin------函数和代码注释的更多相关文章

  1. 用户输入input函数和代码注释

    一.读取用户输入 py3中input()读取用户输入,输出全部是默认str字符串数据类型,一般将其赋值变量,用户输入才继续往下走程序.(py2的不同已单独列出随笔) 二.注释 注释的作用:代码量大的时 ...

  2. C++统计代码注释行数 & 有效代码行数 & 代码注释公共行 & 函数个数

    问题来源,在14年的暑假的一次小项目当中遇到了一个这样的问题,要求统计C++代码的注释行数,有效代码行数,代码注释公共行数,以及函数个数. 下面稍微解释一下问题, 1)注释行数:指有注释的行,包括有代 ...

  3. 常见的JS手写函数汇总(代码注释、持续更新)

    最近在复习面试中常见的JS手写函数,顺便进行代码注释和总结,方便自己回顾也加深记,内容也会陆陆续续进行补充和改善. 一.手写深拷贝 <script> const obj1 = { name ...

  4. 在vs.net 2010,2015 等版本,给JS函数添加代码提示\注释

    经常编写JS的朋友常常会因为函数写多了,隔一段时间就会忘记了函数的用途,或者函数里带的参数作用情况,这个时候会联想到VS工具里的强大提示功能,多希望也能在JS上实现呀,告诉你,这个想法并不是多难,VS ...

  5. PHPDocument 代码注释规范总结

    PHPDocument 代码注释规范 1. 安装phpDocumentor(不推荐命令行安装)在http://manual.phpdoc.org/下载最新版本的PhpDoc放在web服务器目录下使得通 ...

  6. 养成代码注释习惯,帮助你更好使用NetBeans导航器

    在使用NetBeans编写php代码时,为了在一个类中,或者在方法库文件中快速找到你想要找的函数或方法,通常我们会使用NetBeans的导航器. 我们看一个导航器的事例: 大家知道,在php中代码习惯 ...

  7. 从开源项目看python代码注释

    最近看了不少代码,也写了不少代码,所以在看和写之间发现了很多的问题,真的是很多,至少从我的认识来看,有几个地方有很大的改进空间,这里不准备把所有的问题都列举出来,所以就先挑选一个比较明显得来和大家聊聊 ...

  8. Python用户输入和代码注释

    一.用户输入 若你安装的是Python3.x版本,当你在Python IDLE(编辑器) 中输入以下代码: name = input('用户名:') print('Hello',name) 保存并执行 ...

  9. VS 编码规范---- 代码注释设置

    一个良好的代码风格在开发过程和后期维护过程中是必不可少的.每次在添加新类的时候都需要添加一些关于类的注释,包括创建时间.创建人.类的功能介绍.修改时间等一系列的信息,以方便以后的查找和快速了解.在Co ...

随机推荐

  1. Java队列存储结构及实现

    一.队列(Queue) 队列是一种特殊的线性表,它只允许在表的前段(front)进行删除操作,只允许在表的后端(rear)进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为队头. 对于一个队 ...

  2. jenkins slave启动报错:hudson.util.IOException2: Slave JVM has terminated. Exit code=126

    添加mac slave节点报错如下:Expanded the channel window size to 4MB [11/07/14 19:11:54] [SSH] Starting slave p ...

  3. Java中Map用法详解

    原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...

  4. Restful风格API

    一:协议 API与用户的通信协议,总是使用HTTPS协议. 二:域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以 ...

  5. 如何获取iClap的内测资格

    iClap,一款拥有智能产品管理能力的系统,第一次遇见是在8月下旬的创新中国的展会上,茫茫人海中只因多看了你一眼,便深深的留在脑海里挥之不去,展会结束的当天就忍不住想要更多的了解你,登陆iClap官网 ...

  6. [转]Unix/Linux开源世界资源链接汇总

    转自:http://blog.csdn.net/21aspnet/article/details/6754126 最后更新:2012.12.04 说明:好东西在后面,Linux镜像基本涵盖全球主要下载 ...

  7. python3.5实现购物车

    一.购物车实现: 购物车功能: 用户登录:密码错误三次锁定账户. 商品列表分页显示:输入页码查看指定页数商品信息. 已购买商品列表:显示已购买的物品列表:可以模糊查询已购买的商品并在终端打印. 充值: ...

  8. NIO 02 (转)

    本文转自:http://weixiaolu.iteye.com/blog/1479656 SelectionKey.OP_ACCEPT // 服务端监听,并注册OP_ACCEPT事件后,就已准备好接受 ...

  9. tomcat源码调试

    三.tomcat目录结构 tomcat的下载安装有很多教程,不再赘述. 现在的tomcat已经到9了,当tomcat下载安装完成后,其目录大致如下:     除了上面的文件夹,还有四个文件:     ...

  10. vi重要操作指令

    [Ctrl] + [f] 萤幕『向下』移动一页,相当于[Page Down]按键( 常用 ) [Ctrl] + [b] 萤幕『向上』移动一页,相当于[Page Up]按键( 常用 ) 0 或功能键[H ...