2016-11-27 9 views
0

データアクセス層を構築するためのPlay Slickの例をいくつか見てきましたが、CatDAO exampleに次の行があります。目的:x.map {_ =>()}

Scalaのインタープリタで、次の実行されているいくつかの手がかりを提供しますが、それは上記のinsertメソッドで必要とされる理由はまだそれは完全には明らかではありません。
def insert(cat: Cat): Future[Unit] = db.run(Cats += cat).map { _ =>() } 

は、と私は.map { _ =>() }

UPDATEを行う目的だのだろうか。

scala> val test = Seq(1, 2, 3) 
test: Seq[Int] = List(1, 2, 3) 

scala> test map { _ =>() } 
res0: Seq[Unit] = List((),(),()) 

答えて

3

そのマッピングなしdb.run方法は、(戻り型は次いでFuture[Int]あろう)データベースに挿入されたレコードの数を返します。しかし、コードの作成者はその価値を必要とせず、代わりにFuture[Unit]を返すようにAPIを希望します。そのため、彼はmapを使用しています。この場合、IntUnitにマッピングします(()Unitを表す値です)。

+0

明快にするために、おそらく '.map {_ => Unit}'をもう少しタイピングするのがもっと明らかでしょうか? –

+1

残念ながら、これは 'Unit'が型であり、'() 'がその型のインスタンスであるため、同じ動作をしません。したがって、あなたのマップは、そのタイプのインスタンスのシーケンス( 'Seq [Unit]')ではなく、一連のタイプ( 'Seq [Unit.type]')を返します –

関連する問題