タイプ付きブラックボックスマクロ(暗黙のマテリアライザー)では、Type
またはSymbol
がタプルであるかどうかを確認するにはどうすればよいですか?パターンマッチングなどの明らかな解決策がありますが、どこでも見つけることができるisTuple
メソッドがありますか?Scalaマクロ:シンボル/タイプがタプルであるかどうかを確認します
は、これまでのところ、私はこれを行うことができます知っている:
def typed[A : c.WeakTypeTag]: Symbol = weakTypeOf[A].typeSymbol
object TupleSymbols {
val tuple2 = typed[(_, _)]
val tuple3 = typed[(_, _, _)]
// ... and so on
}
上記の怪物よりも健全なアプローチがありますか?
名前が 'scala.Tuple \ d *'と一致することを確認しますか? –
@AlexeyRomanovそれは最高ですか?軽薄だが行けると感じる。 – flavian
私は確かに 'tuple2'などの定義よりも好きですが、もっと良い選択肢があるかどうかはわかりません。 –