Как преобразовать set/println в строку?

Я пытаюсь добавить набор в электронную почту в виде текста

//Data class

@Entity(tableName = "inventory")
data class InventoryDataClass(
    @PrimaryKey(autoGenerate = true)
    var id: Int,
    @NonNull var itemNumber: String,
    @NonNull val itemDescription: String,
    val currentInventory: Int?,
    @NonNull val optimalInventory: Int,
    @NonNull val minInventory: Int
)

// getting list from room

    val inventoryList by mainViewModel.getInventoryItems.collectAsState(initial = emptyList())

//converting list to set

val emailNumber = inventoryList.map { item ->
println("Item Number: ${item.itemNumber} | Item Description: ${item.itemDescription} | Current Inventory: ${item.currentInventory.toString()}")}.toSet()

Я могу получить результат, который мне нужен:

I/System.out: Item Number: 123| Item Description: item1 | Current Inventory: 47
I/System.out: Item Number: 456| Item Description: item2 | Current Inventory: 8
...

Как я могу получить его в виде строки и добавить в свою электронную почту в виде текста? Пока что я могу получить только Kotlin.Unit

Log.d(TAG, "InventoryMainScreen: $emailNumber")
//output
D/MainActivity: InventoryMainScreen: [kotlin.Unit]

Только не вызывайте println. Верните свою строку непосредственно в лямбда вместо того, чтобы сначала передавать ее в println().

Tenfour04 23.03.2022 02:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
38
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете добавить к StringBuilder:

//Output this:
//Item Number: 123| Item Description: item1 | Current Inventory: 47
//Item Number: 123| Item Description: item1 | Current Inventory: 47

val emailNumber = StringBuilder()
inventoryList.forEach { item ->
    emailNumber.append("Item Number: ${item.itemNumber} | Item Description: ${item.itemDescription} | Current Inventory: ${item.currentInventory}").append("\n")
}
emailNumber.removeSuffix("\n")
Ответ принят как подходящий

Вы можете использовать joinToString:

val logsString = inventoryList.joinToString(separator = "\n") { item ->
    "Item Number: ${item.itemNumber} | Item Description: ${item.itemDescription} | Current Inventory: ${item.currentInventory.toString()}"
}

Другие вопросы по теме