定义函数

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 = 0fun 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.kotlinIntKotlinStatic.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}")elseprintln("Hi there!")// `return Unit` 或者 `return` 是可选的
}

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

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

代码注释

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

// 这是一个行注释/* 这是一个多行的块注释。 */

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

 

Kotlin------函数和代码注释相关推荐

  1. 看看函数名和注释,AI就能自动生成代码,程序员:这不真实,我要失业

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:机器之心  参与:张倩.Racoon X.Jamin 你 ...

  2. 在VS2010里可以给JS函数添加代码提示\注释

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

  3. Kotlin 4. Kotlin 函数注解:Suppress,Volatile, Synchronized, Bindable, RequiresApi,SerializedName

    一起来学Kotlin:概念:4. Kotlin 函数注解:Suppress,Volatile, Synchronized, Bindable, RequiresApi,SerializedName 这 ...

  4. 归并排序(代码注释超详细)

    归并排序: (复制粘贴百度百科没什么意思),简单来说,就是对数组进行分组,然后分组进行排序,排序完最后再整合起来排序! 我看了很多博客,都是写的8个数据呀什么的(2^4,分组方便),我就想着,要是10 ...

  5. 代码注释//_您应该停止编写//的五个代码注释,并且//应该开始的一个注释

    代码注释// 提供来自您最喜欢和最受欢迎的开源项目的示例-React,Angular,PHP,Pandas等! (With examples from your favorite and most p ...

  6. tensorflow笔记:流程,概念和简单代码注释

    tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...

  7. php代码注释处理类库,php代码注释

    代码注释在多人开发的时候非常重要,现象一下,一段代码没有任何主要你去结合运行的效果去看实现的逻辑,那是非常费劲的事. 如果让别人看懂你写的代码,代码注释启动非常重要的作用.一个不会写代码注释的不是一个 ...

  8. java的注释规范_Java代码注释规范

    1,单行(单行)-简短说明: ///... 单行注释: 代码中的单行注释. 最好在注释前有一个空行,并在其后加上与代码相同的缩进级别. 如果无法完成一行,则应使用块注释. 评论格式: 在行首注释: 在 ...

  9. 代码注释规范-google版本

    注释 注释虽然写起来很痛苦,但对保证代码可读性至为重要,下面的规则描述了应该注释什么.注释在哪儿.当然也要记住,注释的确很重要,但最好的代码本身就是文档(self-documenting),类型和变量 ...

最新文章

  1. 腾讯视频会议使用测试
  2. Xamarin Android项目真机测试闪退
  3. HDU 2612 Find a way(BFS)
  4. 【Qt】简单QT文本编辑器
  5. HDU 6030 Happy Necklace
  6. SAP CRM One Order object type in line item - when it is filled
  7. Object-c 总结之NSArray
  8. maven常见问题归纳
  9. 解决方案:PowerDesigner 16设置生成SQL column不含有collate chinese_prc_ci_as
  10. Introduction to CALayers Tutorial
  11. python3.6 - threading 多线程编程基础(1)
  12. tensorflow分布式运行
  13. nj04---事件回调函数
  14. 基于51单片机的温度检测调节系统设计
  15. Android 在PreferenceActivity 中移除一个Preference
  16. 初探NIVIDIA GPU+CUDA+pyTorch
  17. Redis:Error starting userland proxy: listen tcp4 0.0.0.0:6379: bind: address already in use
  18. 【重识云原生】第一章——不谋全局不足以谋一域
  19. java web分层和层间数据传递 vo bo po
  20. Java8-使用stream.sorted()对List排序

热门文章

  1. Python处理脑电--Epochs数据可视化
  2. 300多工程师死磕2年,vivo终于发布自研芯片V1,降低功耗50%全片上储存
  3. 程序员们的启蒙老师,终于拿图灵奖了
  4. 波士顿动力副总裁:机器人一天就学会了芭蕾舞,尚未使用机器学习技术
  5. 特斯拉撞了警车:辅助系统Autopilot全程开启,连撞两车还没自动停下
  6. 史上最大中文知识图谱,规模达1.4亿,现在开源可下载,还有配套聊天机器人API...
  7. JSP标签:jsp内置标签、jstl标签、自定义标签
  8. Dynamic Expressions and Queries in LINQ
  9. clear session on close of browser jsp
  10. openssl 创建私有CA