私はScalaとPlay Frameworkを初めて使うので、何が間違っているのかよく分かりません。 Slick DBコントロール(Play Framework)が提供するFuture [Option [MyType]]を解凍しようとしています。 MyTypeは、コード内のBoundingBoxと呼ばれます。Scalaの将来の[Option [MyType]]を開けよう
def getBoundingBoxByFileName(name: String) = {
val selectByName = boundingBoxTableQuery.filter{ boundingBoxTable =>
boundingBoxTable.name === name
}
db.run(selectByName.result.headOption)
}
BoundingBoxタイプにproduct_nameというフィールドがあります。このフィールドを取得するには、次の操作を行います。
val boundingBoxFutOpt = BoundingBoxQueryActions.getBoundingBoxByFileName("some_file")
val res = for {
optBb : Option[db.BoundingBox] <- boundingBoxFutOpt
} yield{
for(bb : db.BoundingBox <- optBb) yield {
println(s"${bb.product_name}")
}
}
このコードは出力に何も表示されませんが、コンパイルエラーはありません。 (bb参照を使用しない)いくつかのランダムなテキストのprintln文を変更すると、それもコンソールには表示されません。私には、printlnステートメントは決して実行されないようです。
この問題については、いくつかの方向性があります。
ありがとうございます!これはトリックでした – Ivan