Я хочу объединить несколько опций с опцией кортежа:
val maybeA: Option[Int] = ...
val maybeB: Option[String] = ...
val combined: Option[(Int,String)] = combine(maybeA, maybeB)
Есть много способов сделать это, давайте go с:
def combined[X,Y](maybeA: Option[X], maybeB: Option[Y]) = maybeA.zip(maybeB).headOption
и это отлично.
теперь мне интересно, можно ли это как-то динамически сделать для varargs и кортежа? как будет выглядеть подпись?
def combine[???](options: Option[?]*): Tuple[?]