初心者のScalaの質問。2つのリスト(Scala)で共通項目を検索
私はケースクラス
case class weightedFruits(fruits: Set[String], weight: Double)
2つのリストを持っている操作を行うと、新しいリストに
を作成するよりも、一般的な項目を見つけ、二つのリストを受け取る機能を実装しようとしている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
の各項目の上に行きたいです私は2つの問題をしました。このコードで
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)は、コード、小さな操作を行うと、(まだ動作していない)新しいList[weightedFruits]
私を作成します
ご迷惑をおかけしておりません。申し訳ありませんが、私の質問があなたを怒らせる場合...
最後の質問多分、この仕事をするより効率的な方法がありますか?
おかげ
を使用していくつかのフィールドを上書きします。そのためには[SortedSets](http://docs.scala-lang.org/overviews/collections/sets.html#sorted-sets)が必要です – hasumedic
希望の関数のシグネチャ、入力、出力の例を挙げてください?例 'def add1(x:Int):Int'、入力:' add1(42) '、出力:' 43'。 –
希望の関数入力2つの 'List [weightedFuits]'、出力もリストです。 'def conf(フィルタリング:List [weightedFruits]、full:List [weightedFruits]):リスト[weightedFruits]' – Toren