Kotlin中有任何字符串函数吗?

Kotlin中有任何字符串函数吗?,kotlin,Kotlin,在科特林 我想创建一个方法,该方法接受一个函数,这样该函数就可以应用于任何,但返回一个字符串。这基本上是一个进行字符串提取的函数 我怎么能这样做?所以它是这样的:假设我有两个模型 class A{ val myStirngRef: String } 然后我有了一个方法 fun doSomethingWithEitherAOrBType(instance: Any, function: (Any) -> String){ val str = function.call(insta

在科特林

我想创建一个方法,该方法接受一个函数,这样该函数就可以应用于
任何
,但返回一个字符串。这基本上是一个进行字符串提取的函数

我怎么能这样做?所以它是这样的:假设我有两个模型

class A{
  val myStirngRef: String
}
然后我有了一个方法

fun doSomethingWithEitherAOrBType(instance: Any, function: (Any) -> String){
   val str = function.call(instance)
}
这在Kotlin中是可能的还是存在类型更改问题?

这非常简单:


不确定我是否理解您打算如何使用此功能。但是假设函数可以在任何对象上调用,并且您传递的
函数
引用是字符串引用的getter,那么您可以使用泛型执行此操作:

inline fun <T: Any> doSomethingWithEitherAOrBType(instance: T, function: (T) -> String){
    val str = function(instance)
    // ...
}
在科特林没有什么可抱怨的。 因此,您需要定义此函数的重载变量:

inline fun dosomethingWitherOrbType(实例:A,函数:A.()->String)=with(实例,函数)
内联fun dosomethingWitherOrbType(实例:B,函数:B.()->字符串)=with(实例,函数)
用法:

val b = B()
doSomethingWithEitherAOrBType(b, B::otherStringRef) 

// or

doSomethingWithEitherAOrBType(b) { it.otherStringRef } 
doSomethingWitherOrbType(A()){myStirngRef}
doSomethingWitherOrbType(B()){otherStringRef}
inline fun <T: Any> doSomethingWithEitherAOrBType(instance: T, function: (T) -> String){
    val str = function(instance)
    // ...
}
val b = B()
doSomethingWithEitherAOrBType(b, B::otherStringRef) 

// or

doSomethingWithEitherAOrBType(b) { it.otherStringRef }