当前位置:   article > 正文

Kotlin学习笔记之入门篇_getobjectarg类的作用

getobjectarg类的作用

一、基本概念

1. 函数

1.1 基本形式

fun showMessage(message: String?): Unit {
   

    message?.let {
   
        println(it)
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1.2 参数使用默认值

fun showName(name: String, age: Int = 2) : Unit {
   
    println("My name is $name, my age is $age years old")
}
  • 1
  • 2
  • 3
  • 4

1.3 函数返回值

fun doubleOf(number: Int): Int {
   
    return number + number;
}
  • 1
  • 2
  • 3
  • 4

1.4 函数简单形式

fun total(single: Double, count: Int, percent: Double) : Double = single * count * percent
  • 1

1.5 中缀函数

类的成员函数, 并且参数个数为1, 调用形式比较特殊, 函数的名字需要像操作符一样放在类对象和参数的中间用空格分开: obj op arg
常用中缀函数 to, “age” to 18 结果为 Pair(“age”, 18)

infix fun Char.repeat(times: Int) = "${
     this}".repeat(times)
  • 1
  • 2

1.6 操作符函数

/// 比如定义乘法操作符 *
/// 整数 * 字符串 => 重复(整数次)输入字符串的字符串
operator fun Int.times(message: String) = message.repeat(this)
  • 1
  • 2
  • 3

1.7 vararg参数

/// 表示数量不定的同类型参数
/// 在运行期间, vararg 标记的参数会表现为数组, 如果需要在函数内部传递给另一个vararg 参数的函数, 需要用 * 来引用
fun multiPrint(vararg messages: String) {
   
    for (i in messages) {
   
        print(i)
        print(if (i === messages.last()) "" else ", ")
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2. 常量和变量

2.1 常量的定义,

  • 使用 val 关键字, 形式: val 常量名[: 常量类型] = 常量值
    /// 定义时必须初始化, 可以通过类型推断省略常量的类型标志
    /// 常量定义后, 不可再修改常量的值, 否则编译报错
    val n: Int = 100
    val name = "God"
  • 1
  • 2
  • 3
  • 4

2.2 变量的定义

  • 使用 var 关键字, 形式: var 变量名[: 变量类型] = 初始值
    /// 变量同样在定义时必须给定初始值, 及时是可空/可选类型, 也要使用null进行初始化
    var number: String? = null
    var age: Int = 0
    var message = "Hahahaha"
  • 1
  • 2
  • 3
  • 4

2.3. 空值安全保障

  • kotlin中规定:不可以对任何类型的变量赋值为null, 如果认定为该变量可以为null, 则必须将该变量定义为可空类型, 即在原来的类型后面加上?
  • 并且可空类型的变量也不可传递到非可空类型参数的函数中
  • 如果函数的参数类型有可能为空, 则应该使用可空类型的参数
    var myName = "oyoung"
    /// myName = null // 不允许

    var yourName: String? = "Big SB"
    yourName = null
  • 1
  • 2
  • 3
  • 4
  • 5

3. 类

3.1 不包含任何属性和自定义构造函数的类

class One
  • 1

3.2 包含属性和自定义构造的类

class Two(val value: Int, var name: String)

fun  classUsage() {
   

    val one = One()
    var two = Two(0, "O")

    /// 3.3 访问类属性
    println(two.value)

    /// 3.4 修改类属性
    two.name  = "Fuck"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4 泛型

4.1 泛型类

class Queue<E>(vararg items: E) {
   
    private val children = items.toMutableList()

    fun enqueue(item: E) = children.add(item)

    fun dequeue(): E = children.removeAt(0)

    fun size() = children.size

    fun isEmpty() = children
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/199091
推荐阅读
相关标签
  

闽ICP备14008679号