Optionにタプルを包もうと考え、以下の例のように書きました。


Some(userId, None, Some(itemId), item)

すると -Xlint オプションのお陰で、以下のように警告されました。


Adapting argument list by creating a 4-tuple: this may not be what you want.

[warn]         signature: Some.apply[A](x: A): Some[A]

[warn]   given arguments: userId, None, Some(itemId), item

[warn]  after adaptation: Some((userId, None, Some(itemId), item))

[warn]           Some(userId, None, Some(itemId), item)

「はて、うまく渡っているようだが、どういうことだろう」と考え、その前で @unchecked アノテーションを付けるなどしてみたがうまくいかず。

この警告の意味は要するに、

「Someの引数はひとつなのに、与えられた引数は4つもある。仕方がないからタプルに変換して渡してやったが、これはアンタの考えている挙動と異なるかもしれないから、よく確認しろ!」

ということです。

以下のように、タプルを明示的に渡してあげると、警告はなくなりました。ちゃんとタプルとして渡せているのかどうか、注意しなければなりませんね。


Some((orderDetail.sellerId, None, Some(orderDetailComment.orderDetailId), orderDetail))

安易に警告を抑制(@suppressWarnings)できなくてよかったです。

参考

引数の数間違えたと思ったらタプルになってた