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)できなくてよかったです。
参考