Kotlin函数需返回String却得到Any类型,应如何调整实现?
问题原因
- 原函数没有显式声明返回值类型,Kotlin中带代码块的函数未声明返回值时默认返回
Unit类型,无法得到目标字符串 forEach函数本身返回值固定为Unit,你在forEach内部写的表达式不会作为函数的返回值向外传递,因此无法得到计算结果
修正方案
方案1:和原有逻辑一致(取第一个匹配到的SomeAttribute的values拼接)
private fun getValue(text: String): String { return myMap.values .flatten() // 把myMap中所有的List<SomeAttribute>合并为一个集合 .find { it.key == text } // 找到第一个key匹配的实例 ?.values ?.joinToString(separator = "#") ?: "" // 没有匹配结果时返回空字符串 }
方案2:收集所有匹配到的SomeAttribute的values统一拼接
如果需要把所有key匹配的实例的values全部拼接成字符串,用这个版本:
private fun getValue(text: String): String { return myMap.values .flatten() .filter { it.key == text } // 筛选所有key匹配的实例 .flatMap { it.values } // 提取所有values并合并为一个字符串集合 .joinToString(separator = "#") // 空集合时默认返回空字符串 }
两种方案的返回值都是明确的String类型,输出格式符合你要求的122PR、122PR#374DH这类形式。
内容的提问来源于stack exchange,提问作者inconnu
相关产品推荐
相关产品推荐

