Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Casting 名单的演员阵容<;字符串>;列出<;T>;在科特林_Casting_Kotlin - Fatal编程技术网

Casting 名单的演员阵容<;字符串>;列出<;T>;在科特林

Casting 名单的演员阵容<;字符串>;列出<;T>;在科特林,casting,kotlin,Casting,Kotlin,我需要创建一个拆分字符串并强制转换值的通用方法 inline fun <reified T: Any> convertFromString(myString: String) : List<T>{ val castedList = ArrayList<T>() for(item in myString.split(";")){ castedList.add(item as T) } return castedL

我需要创建一个拆分字符串并强制转换值的通用方法

inline fun <reified T: Any> convertFromString(myString: String) : List<T>{
    val castedList = ArrayList<T>()
    for(item in  myString.split(";")){
        castedList.add(item as T)
    }
    return castedList
}
inlinefunconvertfromstring(myString:String):列表{
val castedList=ArrayList()
对于(myString.split(“;”)中的项){
castedList.add(项目为T)
}
返回铸造列表
}
我调用此方法
convertFromString(“1;2;3;4;5;6”)
,并希望有输出
列表
,但在将
项转换为T时失败


如何将所有值强制转换为generic
T

我建议您提供一个转换函数,例如

inline fun <T: Any> convertFromString(myString: String, transformation: (String) -> T)
                                                      = myString.split(";")
                                                                .map(transformation)
                                                                .toList()

此外,使用这种方法,您不再需要将
具体化。然而,
内联
对于任何包含lambda函数的函数仍然有用。

我建议您提供一个转换函数,例如

inline fun <T: Any> convertFromString(myString: String, transformation: (String) -> T)
                                                      = myString.split(";")
                                                                .map(transformation)
                                                                .toList()

此外,使用这种方法,您不再需要将
具体化。但是,
内联
对于包含lambda函数的任何函数仍然有用。

项as T
仅当项“是”
T
时有效。在这种情况下,
是一个
字符串
T
是一个
Int
,因此
字符串作为Int
失败。我想到的唯一可能的解决方案是类似“如果T是Int->castedList.add(item.toInt())”
item as T
只有在item“是”
T
时才起作用。在这种情况下,
是一个
字符串
T
是一个
Int
,因此
字符串作为Int
失败。我想到的唯一可能的解决方案是“如果T是Int->castedList.add(item.toInt())”