Вопрос новичка в Scala.
Я пытаюсь реализовать функцию, которая получает два списка, находит общий элемент, чем выполняет манипуляции и создает новый список
У меня есть класс дела
case class weightedFruits(fruits: Set[String], weight: Double)
и два списка weightedFruitsList
и filteredWeightedFruitsList
:
// set is sorted
val weightedFruitsList = List(
weightedFruits(Set("banana"), 200),
weightedFruits(Set("banana", "orange"), 180),
weightedFruits(Set("banana", "orange", "apple"), 170),
weightedFruits(Set("feijoa", "fig"), 201))
//filtered List , Set sorted, contains "melon" as last member
val filteredWeightedFruitsList = List(
weightedFruits(Set("banana", "melon"), 250),
weightedFruits(Set("banana", "orange", "melon"), 270),
weightedFruits(Set("banana", "orange", "apple", "melon"), 365))
Я хотел бы просмотреть каждый элемент в filteredWeightedFruitsList
, найти те же элементы в weightedFruitsList
, выполнить небольшую манипуляцию и создать новый List[weightedFruits]
Мой (еще не работающий) код:
def conf :Option[List[weightedFruits]] = {
for (filtered <- filteredWeightedFruitsList){
weightedFruitsList.find{
case x if ( x.fruits equals filtered.fruits.dropRight(1) ) => return weightedFruits(x.fruits, x.weight / filtered.weight)]
case _ => false
}
}
}
С этим кодом у меня две проблемы: 1) type mismatch; found : Unit required: Option
2) type mismatch; found : weightedFruits required: Option[List[weightedFruits]]
Любые мысли приветствуются. Извините, если мой вопрос вас разозлил...
Последний вопрос, может быть, есть более эффективный способ выполнить эту задачу?
Спасибо
t.copy
22.09.2016