operator fun invoke() : String{ return "$name - $age" } } 定义完上面代码后,我们来进行使用: val testBean = TestBean("zyh",20) //正常调用 testBean.invoke() //约定后的简化调用 testBean() 这里会发现testBean对象可以调用invoke方法是正常调用,但是也可以testBean()直接来调用invoke方法,这就是...
//注意,这里接口的方法就是invokepublicinterfaceFunction1<inP1,outR>:Function<R>{/** Invokes the function with the specified argument. */publicoperator funinvoke(p1:P1):R} 那我也就可以直接使用下面代码来传递参数: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 val function1=object:Function1<...
class TestInvoke() { operator fun invoke() { println("invoke()") } operator fun invoke(value: Int) { println("invoke value") } operator fun invoke(func: ()->Unit) { func() } } val test = TestInvoke() test() test(1) test{ println("似乎比较有用的") } 1. 2. 3. 4. 5. ...
operator fun invoke(): String { return "Hello, World!" } } 在上面的代码中,我们定义了一个名为MyObject的对象,并为其添加了一个invoke方法。该方法返回一个字符串"Hello, World!"。由于我们使用了operator关键字,Kotlin会自动将该对象转换为函数调用。 调用包含invoke方法的对象 要调用包含invoke方法的对象,...
sum().invoke(1, 2) } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 3.6 中缀表示法 标有infix关键字的函数也可以使用中缀表示法调用。中缀函数必须满足以下要求: 它们必须是成员函数或扩展函数; 它们必须只有一个参数; ...
operator fun invoke(type: CarType): Car { return when (type) { CarType.AUDI -> Audi() CarType.BMW -> BMW() } } } } 这里重载了invoke()方法,调用时直接Car(CarType.BMW)即可。你可以试着用 Java 代码实现上面的逻辑,对比一下。
companion object{operator funinvoke(type:CarType):Car{returnwhen(type){CarType.AUDI->Audi()CarType.BMW->BMW()}}} 这里重载了invoke()方法,调用时直接Car(CarType.BMW)即可。你可以试着用 Java 代码实现上面的逻辑,对比一下。 伴生对象扩展方法 伴生...
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...
Operator(op).invoke(arg1, arg2)}”) //将op运算符赋值给等式} catch (e: NumberFormatException) {println("类型格式异常:" + e)} catch (e: IllegalArgumentException) {println("输入是否为三个参数的一般计算:" + e)}println("是否再来一次[Y]")...
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();//调用...