public operator fun invoke(p1: P1): R } 那我也就可以直接使用下面代码来传递参数: val function1 = object: Function1<Int,Unit> { override fun invoke(p1: Int) { Logger.d("$p1") } } testInvoke.setSingleListener(function1) 这里看起来合情合理,因为在testRun函数中我们调用了invoke函数,把100...
//注意,这里接口的方法就是invokepublicinterfaceFunction1<inP1,outR>:Function<R>{/** Invokes the function with the specified argument. */publicoperator funinvoke(p1:P1):R} 那我也就可以直接使用下面代码来传递参数: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 val function1=object:Function1<...
fun main() { var stu = Student("Mary", 18) stu() // 打印: Mary var age = stu(1) // 打印: a println(age) // 打印: 18 } class Student(var name: String, var age: Int) { operator fun invoke(): Unit { println(name) } operator fun invoke(i: Int): Int { print...
interfaceCar{val brand:String companion object{operator funinvoke(type:CarType):Car{returnwhen(type){CarType.AUDI->Audi()CarType.BMW->BMW()}}} 这里重载了invoke()方法,调用时直接Car(CarType.BMW)即可。你可以试着用 Java 代码实现上面的逻辑,对比一下。 伴生对象扩展方法 伴生对象也是支持扩展方法的。
其实kotlin中的约定应用,包含以下几种,都用operator关键字定义。 1. 操作符号重载约定 2. 属性委托约定 3. 解构约定 4. invoke约定 5. Iterator约定 1. 操作符号重载约定 这个不再细讲了,有一点要注意,不像C++重载时重载函数的名字就是符号,但是kotlin是有映射表的。什么符号对应什么函数名字,比如,“+”对应的...
operator fun invoke(type: CarType): Car { return when (type) { CarType.AUDI -> Audi() CarType.BMW -> BMW() } } } } 这里重载了invoke()方法,调用时直接Car(CarType.BMW)即可。你可以试着用 Java 代码实现上面的逻辑,对比一下。
operator fun invoke1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 fun main(args:Array<String>):Unit { val x = A(3)//有参数构造函数不会与伴生对象定义的invoke()歧义,但是可能会和 invoke(x)歧义。 x();//调用...
operator fun invoke(): String { return "Hello, World!" } } 在上面的代码中,我们定义了一个名为MyObject的对象,并为其添加了一个invoke方法。该方法返回一个字符串"Hello, World!"。由于我们使用了operator关键字,Kotlin会自动将该对象转换为函数调用。 调用包含invoke方法的对象 要调用包含invoke方法的对象,...
operator fun invoke(init: AcceptanceContext.() -> Unit): AcceptanceContext { val acceptanceContext = AcceptanceContext() acceptanceContext.init() return acceptanceContext } } Lambdas 首先看一下AcceptanceContext类。它旨在用于存储路径元素的集合,并用于表示整个图以及parallel-blocks。addStep和parallel方法接受...
operator fun invoke():Double{ // 3方+4方 并开方 return Math.hypot(real,imaginary) } } class Book { //中缀表达式 infix fun on(any: Any):Boolean{ return false } } class Desk{ } fun main(args: Array<String>) { val c1 = Complex(3.0, 4.0) //3+4i ...