kotlin - 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()
)
我希望输出字符串看起来像这样122PR
或122PR#374DH
分别。
解决方案
forEach
方法返回Unit
。您需要在其中做一些副作用(修改一些预先定义的变量)并返回这个变量。但最好使用其他方法,它会立即返回您需要的内容。
根据String
您想要从中获得的确切信息Map
,有几种选择:
- 如果您想获得
values
第一次见面SomeAttribute
的要求text
,key
那么您需要:
myMap.values.flatten().find { it.key == text }?.values?.joinToString(separator = "#")
- 如果您想获取each
values
中的所有 first metSomeAttribute
sList<SomeAttribute>
,它们需要text
作为 akey
,那么您需要:
myMap.values.flatMap { v -> v.find { it.key == text }?.values ?: emptyList() }.joinToString(separator = "#")
- 如果您想获取在 each中需要作为 a
values
的所有SomeAttribute
s ,那么您需要:text
key
List<SomeAttribute>
myMap.values.flatMap { v -> v.filter { it.key == text } }.map { it.values }.joinToString(separator = "#")
推荐阅读
- php - 为什么我不能从网站将变量添加到 mysql 数据库中?
- c# - 如何使用 Autofac 解析类型,该类型需要一个实例,该实例具有该类型的实例作为 ctor 参数
- javascript - 我正在尝试用 Javascript 理解这段 Netsted 对象
- python - 为什么我会收到“webbrowser.Error:找不到可运行的浏览器”?
- javascript - 如何根据结果将图像添加到测验结果
- python - 在 MacOS 上使用 Brownie python 安装错误
- android - Android Studio Bumblebee 模拟器没有更新我的更改
- python - 如何在提取文本之前识别可能损坏的 pdf 页面?
- powershell - WindowsPowerShell 重命名项目
- java - java / scala不兼容的类型,当将scala类封装(或使用instanceof)到java类时,即使scala类扩展了java类