Nat Strangerweather
03/11/2022, 6:27 PMfun savedData(): Array<Letter> {
val arr = mutableStateOf(boardLetters)
if (savedValues != null) {
for (item in savedLetters!!) {
arr.value = Array(28) {
Letter(item, 0)
}
}
}
return arr.value
}
For info: boardLetters is this: boardLetters: Array<Letter>
Thanks for any help.Luke
03/11/2022, 6:54 PMarr.value
to an array for each savedLetters
, so you replace the array each iteration, keeping the last in the endfun savedData(): Array<Letter> {
return savedValues?.map { Letter(it, 0) }
?.toTypedArray()
?: arrayOf()
}
Nat Strangerweather
03/11/2022, 7:08 PMLuke
03/11/2022, 8:32 PMsavedValues
is a list with corresponding index, a map, or something else?nkiesel
03/11/2022, 8:37 PMfun savedData(savedLetters: List<String>, savedValues: List<Letter>): List<Letter> {
return savedLetters.map { l -> Letter(l, savedValues.find { it.letter == l }?.value ?: 0) }
}
fun savedData(savedLetters: List<String>, savedValues: List<Letter>): List<Letter> {
val m = savedValues.associateBy(Letter::letter)
return savedLetters.map { l -> m.getOrDefault(l, Letter(l, 0)) }
}
Nat Strangerweather
03/11/2022, 8:44 PMnkiesel
03/11/2022, 8:48 PMfun savedData(savedLetters: List<String>, savedValues: List<Letter>): List<Letter> {
return with(savedValues.associateBy(Letter::letter)) { savedLetters.map { get(it) ?: Letter(it, 0) } }
}
if you like one-liners...Letter
is immutable. If that is not the case, you must return new letters:
fun savedData(savedLetters: List<String>, savedValues: List<Letter>): List<Letter> {
return with(savedValues.associateBy(Letter::letter)) { savedLetters.map { Letter(it, get(it)?.value ?: 0) } }
}
Nat Strangerweather
03/11/2022, 9:19 PM