首页 > 解决方案 > Kotlin - 需要返回类型 String 但有任何代替

问题描述

我需要这个函数来返回一个字符串,这样我就可以在另一个函数中调用它,但我得到了任何一个。我怎样才能让它返回一个字符串?

private fun getValue(text: String){
myMap.forEach { (k, v) -> v.find {it.key == text}?.values?.joinToString(separator = "#") ?: ""}}

myMap 是一个Map<UUIDint, List<SomeAttribute>>

SomeAttribute 是一个数据类

data class SomeAttribute(
  var key: String = "",
  var values: List<String> = ArrayList()
)

我希望输出字符串看起来像这样122PR122PR#374DH分别。

标签: kotlin

解决方案


forEach方法返回Unit。您需要在其中做一些副作用(修改一些预先定义的变量)并返回这个变量。但最好使用其他方法,它会立即返回您需要的内容。

根据String您想要从中获得的确切信息Map,有几种选择:

  1. 如果您想获得values第一次见面SomeAttribute的要求textkey那么您需要:
myMap.values.flatten().find { it.key == text }?.values?.joinToString(separator = "#")
  1. 如果您想获取eachvalues中的所有 first met SomeAttributes List<SomeAttribute>,它们需要text作为 a key,那么您需要:
myMap.values.flatMap { v -> v.find { it.key == text }?.values ?: emptyList() }.joinToString(separator = "#")
  1. 如果您想获取在 each中需要作为 avalues的所有SomeAttributes ,那么您需要:textkeyList<SomeAttribute>
myMap.values.flatMap { v -> v.filter { it.key == text } }.map { it.values }.joinToString(separator = "#")

推荐阅读