Kotlin学习(一)

结合官网提供的例子进行Kotlin基础练习

Hello World

首先是如期而至Hello World,很幸运地找到了打印语句,这个main()就是入口了,1.3之后括号里面可以空空如也。

package introduction

fun main() {

    println("Hello, World!")
}

函数

默认参数值及命名参数

在定义函数,设置传入的参数列表时,会涉及到默认参数的概念,就是右侧赋初值,因此调用时你写不写它都有值,可以产生重载的效果。需要注意的是,有初值的往右靠
因为通常调用是按参数位置来赋值,这样有初值的成为可选项
另外,Kotlin中也提供了强行打乱顺序的赋值方法,命名参数法,这样可以指定内容,不用拘泥于位置的格式。

package introduction.functions

//打印字符串 Unit的返回值就是无返回值
fun printMessage(message: String): Unit {
    println(message)
}

//函数的第二个参数是可选的,默认值为Info
fun printMessageWithPrefix(message: String, prefix: String = "Info") {
    println("[$prefix] $message")
}

fun sum(x: Int, y: Int): Int {
    return x + y
}

fun multiply(x: Int, y: Int) = x * y

fun main() {

    printMessage("Hello")
    printMessageWithPrefix("Hello", "Log")
    printMessageWithPrefix("Hello")
    //使用命名参数指明参数,可以改变参数的位置
    printMessageWithPrefix(prefix = "Log", message = "Hello")
    println(sum(1, 2))
}


可变参数

该类型的数据是用逗号隔开,可以任意数量,使用vararg定义。

package introduction.functions

fun printAll(vararg messages: String) {
    for (m in messages) println(m)
}

fun printAllWithPrefix(vararg messages:String, prefix: String) {
    for (m in messages) println(prefix + m)
}

fun log(vararg entries: String) {     //可变参数运行时会变成数组,为了避免直接传数组,使用*
    printAll(*entries)
}

fun main() {

    printAll("Hello", "Hallo", "Salut", "Hola", "你好")

    printAllWithPrefix("Hello", "Hallo", "Salut", "Hola", "你好", prefix = "Greeting:")


}

中缀表达式

接收一个参数的成员函数和扩展函数可以被转为中缀表达式。

package introduction.functions

/**
 * 成员函数或者是接收一个参数的扩展函数可以被转化为中缀函数
 */
class Person(val name: String) {
    val likedPeople = mutableListOf<Person>()
    infix fun likes(other: Person) {
        likedPeople.add(other)
    }
}

fun main() {

    //为Int类定义了一个中缀扩展函数
    infix fun Int.times(str: String) = str.repeat(this)
    println(2 times "Bye ")

    val pair = "Ferrari" to "Katrina"
    println(pair)

    infix fun String.onto(other: String) = Pair(this, other)   //实现以上to的效果
    val myPair = "McLaren" onto "Lucas"
    println(myPair)

    val sophia = Person("Sophia")
    val claudia = Person("Claudia")
    sophia likes claudia  //调用函数的类的对象自身作为左边的一个参数
}

操作符函数

操作符自身具有函数的实现,可以是编程风格更加灵活。

package introduction.functions

fun main() {

    operator fun Int.times(str: String) = str.repeat(this)
    println(2 * "Bye ")  //*自身有多重实现,times,此处进行操作符重载

    operator fun String.get(range: IntRange) = substring(range)    //get 相当于 []
    val str = "Always forgive your enemies; nothing annoys them so much."
    println(str[0 .. 14])
}

本文主要以官网例子为主,内容较为基础,主要使用例子进行理解,也方便自己学习,内容侧重于基础的使用,如需进一步了解细节请移步
官网例子练习
官方详细中文文档
进行深入探讨

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值