3

行ごとに異なる戻り値が返されるのはなぜですか?

val tagIds = postData._1 map (TagTable.newTag(_))
// tagIds is defined as val tagIds: Array[Long]

val tagIds = for(tag <- postData._1) yield TagTable.newTag(_)
// tagIds is defined as val tagIds: Array[models.UnsavedTag => Long]
4

2 に答える 2

4

単純な入力ミスのため:

val tagIds = for(tag <- postData._1) yield TagTable.newTag(tag)
                                                           ^^^
于 2012-05-11T21:00:46.257 に答える
3
val tagIds = postData._1 map (TagTable.newTag(_))

tagこの行は、コレクションに含まれる各アイテムを取得しpostData._1て呼び出すことを示していますTagTable.newTag(tag)。次に、tagIdsこれらの呼び出しのすべての結果を含むコレクションです。

val tagIds = for(tag <- postData._1) yield TagTable.newTag(_)

tagこの行は、 collection に含まれる各アイテムについて、関数( function と同等) をpostData._1返すことを示しています。次に、これらすべての関数を含むコレクションです。TagTable.newTag(_)x => TagTable.newTag(x)tagIds

基本的に、2 番目のバージョンで実際に関数を呼び出しているわけではありません。これを次のように変更します。

val tagIds = for(tag <- postData._1) yield TagTable.newTag(tag)
于 2012-05-11T21:00:01.967 に答える