File tree Expand file tree Collapse file tree 1 file changed +4
-0
lines changed Expand file tree Collapse file tree 1 file changed +4
-0
lines changed Original file line number Diff line number Diff line change @@ -49,6 +49,10 @@ title: 型指定の無いマクロ
49
49
マクロ以外や複合型の一部としてのアンダースコアの使用は期待通り動作しない。
50
50
前者はコンパイルエラーに、後者、例えば ` List[_] ` は通常通り存在型を返すだろう。
51
51
52
+ 型指定の無いマクロは抽出子マクロを可能とすることに注意してほしい: [ SI-5903] ( https://issues.scala-lang.org/browse/SI-5903 ) 。
53
+ Scala 2.10.x においても ` unapply ` や ` unaoolySeq ` をマクロとして宣言することは可能だが、リンクした JIRA ケースに記述されているとおり、使い勝手は非常に制限されたものとなっている。パターンマッチング内におけるテキスト抽象化の全力は型指定の無いマクロによって発揮できるようになる。
54
+ 詳細は単体テストの [ test/files/run/macro-expand-unapply-c] ( https://github.com/scalamacros/kepler/tree/paradise/macros/test/files/run/macro-expand-unapply-c ) を参照。
55
+
52
56
もしマクロに型指定の無いパラメータがあった場合、マクロ展開を型付けする際にタイプチェッカーは引数に関しては何もせずに型指定の無いままマクロに渡す。もしいくつかのパラメータが型アノテーションを持っていたとしても、現行では無視される。これは将来改善される予定だ: [ SI-6971] ( https://issues.scala-lang.org/browse/SI-6971 ) 。引数が型検査されていないため、implicit の解決や型引数の推論は実行されない (しかし、両者ともそれぞれ ` c.typeCheck ` と ` c.inferImplicitValue ` として実行できる)。
53
57
54
58
明示的に渡された型引数はそのままマクロに渡される。もし型引数が渡されなかった場合は、値引数を型検査しない範囲で可能な限り型引数を推論してマクロに渡す。つまり、型引数は型検査されるということだが、この制約は将来無くなるかもしれない: [ SI-6972] ( https://issues.scala-lang.org/browse/SI-6972 ) 。
You can’t perform that action at this time.
0 commit comments