我有一個這樣的清單:
val objectKeys = List("Name","Place","Animal","Thing");
我想將其簡化為 Map[String,Boolean] ,其中 Boolean 是element.size < 8。
這是我寫的:
val mappedObject = objectKeys.fold(Map[String,Boolean])((map,key) => map (key -> key.size < 8))
這給了我以下錯誤:
value is not a member of Object, but could be made available as an extension method.
和
value size is not a member of Object
我對 fold 的理解是它接受一個默認引數并減少它周圍的整個值,但在這種情況下似乎不起作用。誰能幫我這個?
理想的mappedObject應該是這樣的:
val mappedObject = Map[String,Boolean]("Name"->true,"Place"->true,"Animal"->true,"Thing"->true)
等效的 Javascript 實作將是:
const listValues = ["Name","Place","Animal","Thing"];
const reducedObject = listValues.reduce((acc,curr) => {acc[curr] = curr.length < 8;
return acc;
},{});
uj5u.com熱心網友回復:
如果你真的想折疊,這很容易做到:
objectKeys.foldLeft(Map.empty[String, Boolean]) { (acc, key) =>
acc ((key, key.length < 8))
}
這就是說,我和伊萬在一起。map顯然是這里更好的解決方案(或者fproduct如果您使用的是貓庫)。
uj5u.com熱心網友回復:
我認為在這種情況下,您應該只map使用包含布爾檢查的密鑰的元組,然后將其轉換為Map[String, Boolean]viatoMap方法,如下所示。
objectKeys.map(key => (key, key.length < 8)).toMap
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372697.html
標籤:斯卡拉
