1、Kotlin 普通类解构声明 operator fun component1 2、数据类解构声明 五、运算符重载函数 一、嵌套类 嵌套类 指的是 在类 A 中 定义 类 B , 一般是 类 B 对类 A 有一定的作用 , 将类 B 嵌套进 类 A 中 ; 格式如下 : 代码语言:javascript 代码运行次数:0 运行 AI代码解释 class A { class B {
dataclassPoint(val x: Int, val y: Int) { operator fun plus(other: Point): Point {returnPoint(x + other.x, y +other.y) } } 如上在Point类中增加了operator标记,表示该函数是重载了plus; 重载了plus之后就能执行两个Point的相加: val point3 = point1 + point2 val p1 = Point(10, 20) ...
在Kotlin的世界里,我们可以重载算数运算符,包括一元运算符、二元运算符和复合赋值运算符。 使用operator修饰符来修饰特定函数名的函数,这些函数可以是成员函数也可以是扩展函数。 例如,在RxKotlin的disposable.kt中有这样一个方法。 代码语言:javascript 复制 operator fun CompositeDisposable.plusAssign(disposable:Disposable...
数据类 自带 支持解构语法的特性 , 不需要使用 operator fun component1() 解构声明 ; 1、Kotlin 普通类解构声明 operator fun component1 在 普通 Kotlin 类中使用 如下声明 , 即可支持解构语法 ; operator fun component1() = 成员属性名1 operator fun component2() = 成员属性名2 operator fun component3(...
,property:KProperty<*>):String{return"$thisRef, 这里委托了 ${property.name} 属性"}operatorfun setValue(thisRef:Any?,property:KProperty<*>,value:String){println("$thisRef 的 ${property.name} 属性赋值为 $value")}}fun main(args:Array<String>){val e=Example()println(e.p)// 访问该属性,...
operatorfunString.times(num:Int): String {valbuilder = StringBuilder() repeat(num) { builder.append(this) }returnbuilder.toString() }funmain(){valstr ="Abcd"valnewStr = str *4println("newStr:$newStr") } 运行: newStr: AbcdAbcdAbcdAbcd ...
fun main() { var stu1 = Student("Tom", 13) var stu2 = Student("Mary", 18) println(stu1 + stu2) // 打印: [TomMary, 31] } class Student(var name: String, var age: Int) { operator fun plus(other: Student): Student { return Student(this.name + other.name, this.age ...
operator fun ViewGroup.plusAssign(other: View) = addView(other) 现在给 viewGroup 添加一个 view 是如此的简单! viewGroup += view 来自其他语言的最佳实践 操作符重载也在许多其他编程语言中使用,比如:C++、Python、Swift 和 PHP。虽然我们在 Kotlin 中暂时还没有明确的最佳实践,但我们可以从这些语言中学习...
fun main() { val money1=Money(5) val money2=Money(10) val money3=money1+money2 println(money3.value) } 1. 2. 3. 4. 5. 6. 结果: 运算符多重重载 class Money(val value: Int) { operator fun plus(money: Money): Money { ...
operator fun unaryMinus() { canChange = false } } 结语 现在我们可以描述DSL上的验收路径。然而,应该保护DSL用户避免可能的错误。比如在当前版本中,以下代码是可以接受的: 复制 val acceptanceRoute = acceptance { addStep { executor = HEAD_OF_DEPARTMENT ...