Kotlin------函数和代码注释

定义函数

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
 *
 */

 

 
posted @ 2017-09-01 20:56  切切歆语  阅读(2533)  评论(0编辑  收藏  举报