Kotlin-从lambda表达式获取名称
我想获取传递到Kotlin中lambda表达式中的参数的名称。在C#中,我会使用Kotlin-从lambda表达式获取名称,kotlin,Kotlin,我想获取传递到Kotlin中lambda表达式中的参数的名称。在C#中,我会使用表达式来获取参数名,但我不确定这在Kotlin中是否可行 import java.util* 趣味主线(args:Array){ val foo=foo() foo.bar{it.age} //应该打印“年龄” } 数据类模型(val-id:UUID,val-name:String,val-age:Int) 福班{ 娱乐条(表达式:(x:T)->任意){ println(/*参数的名称*/) } } 在Kotlin
表达式
来获取参数名,但我不确定这在Kotlin中是否可行
import java.util*
趣味主线(args:Array){
val foo=foo()
foo.bar{it.age}
//应该打印“年龄”
}
数据类模型(val-id:UUID,val-name:String,val-age:Int)
福班{
娱乐条(表达式:(x:T)->任意){
println(/*参数的名称*/)
}
}
在Kotlin中可以这样做吗?如果要传递属性并打印它们的名称,可以使用:
fun main(args:Array){
val foo=foo()
foo.bar(型号::年龄)
}
福班{
趣味酒吧(p:KProperty){
println(p.name)
}
}
如果要传递属性并打印它们的名称,可以使用:
fun main(args:Array){
val foo=foo()
foo.bar(型号::年龄)
}
福班{
趣味酒吧(p:KProperty){
println(p.name)
}
}
您的意思是要传递一个属性,该属性应打印哪个名称?因为年龄不是一个“参数”here@s1m0nw1…是(我想?)尝试直接传递KProperty(更改参数类型)并在栏中使用其名称。作为如下参数传递:foo.bar(foo::age)@s1m0nw1不确定您的意思,您介意提供一个答案吗?我回答了,但目前无法测试:[您的意思是要传递一个属性,该属性的名称应打印出来吗?因为age不作为“参数”here@s1m0nw1…是的(我想?)尝试直接通过KProperty(更改参数类型)并在bar.Passed中使用其名称作为参数,如下所示:foo.bar(foo::age)@s1m0nw1不确定您的意思,您介意提供答案吗?我提供了答案,但当前无法测试:[这几乎有效,除了你不能通过foo::age
,因为age
是Model
Model::age的一个属性,那么?很可能不是你想要实现的,我担心是的。这可能不是我想要的,但它完成了工作!这几乎有效,除非你不能通过foo::age
,因为age
I那是Model
Model::age的一个属性吗?很可能不是你想要的,我很担心是的。这可能不是我想要的,但它确实起作用了!
import java.util.*
fun main(args: Array<String>) {
val foo = Foo<Model>()
foo.bar { it.age }
// Should print "age"
}
data class Model(val id: UUID, val name: String, val age: Int)
class Foo<T> {
fun bar(expression: (x: T) -> Any) {
println(/*The name of the parameter*/)
}
}
fun main(args: Array<String>) {
val foo = Foo<Model>()
foo.bar(Model::age)
}
class Foo<T> {
fun bar(p: KProperty<*>) {
println(p.name)
}
}