問題タブ [scala-2.10]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - scala 2.10 AST 内の検索
scala 2.10 ASTで要素を再帰的に検索する最良の方法は何ですか?
power.trees(code)
木は、またはmirror.mkToolBox().parseExpr(code)
編集の結果である可能性があります。2.10.0-RC1parseExpr
では、名前が に変更されましたparse
。
私が持っている具体的なユースケースは、メソッド名で特定のクラス/オブジェクトコードからメソッドのコードを抽出することですが、より一般的な方法で定式化された場合、質問は他の人にとってより関連性があると思います.
scala - Scala 2.10 リフレクションが参照する実際のオブジェクトを取得するにはどうすればよいですか?
このコードを検討してください:
Symbol
次のように、このオブジェクトへの参照を取得できます。
さて、このシンボルを持って、どうすれば実際のResponseType
オブジェクトを取得できますか?
scala - Scala 2.10 リフレクションを使用して Enumeration の値を一覧表示するにはどうすればよいですか?
次の列挙を持つ
その値のリストを取得するにはどうすればよいですか?
scala - マクロはクラス本体を取り、明示的な新しい演算子を排除しますか?
私はnew
Scala の演算子、特に DSL の演算子が好きではありませんでした。なし でオブジェクトを構築するための回避策new
は、通常、非常に醜いものです。たとえば、 をインポートscala.actors.Actor._
するとactor { ... }
、 がありますが、本体内では にアクセスできないthis: Actor
ため、そのオブジェクトにはreceive
、react
、self
、 などのあらゆる種類の疑似インスタンス メソッドもあります。
Scala 2.10 マクロを使用すると、次のように動作する可能性があるのだろうか?
追加の課題として、 が の場合doSomething
はどうなりprotected
ますか?
scala - TypeTag とは何ですか? どのように使用しますか?
TypeTags について私が知っているのは、それらがどういうわけかマニフェストを置き換えたということだけです。インターネット上の情報は少なく、私にはこの主題についての良い感覚が得られません。
ですから、例や一般的な使用例など、TypeTags に関する有用な資料へのリンクを共有していただければ幸いです。詳細な回答と説明も大歓迎です。
scala - scala 2.10 で 1 回のマクロ呼び出しで複数のトップレベル クラスを生成することは可能ですか?
私はボイラープレートがたくさんあるプログラムを持っています (残念ながら、Scala のメカニズムでも削減できません)。しかし、マクロを使用して複雑なトップレベル クラスを生成する方法があれば、定型文はすべてなくなります。例えば:
Scala 2.10 マクロで可能ですか?
scala - reify のマクロ展開中の StackOverflowError
reify を使用する簡単なテスト マクロがあります。マクロ展開時に StackOverflowError が発生します。
なぜこれが起こるのですか?どうにか回避できないでしょうか?
編集: これは M6 で起こることです。M7で試してみたところ、次のように表示されます
実装制限: 型 Object{def (): O.type} (ClassInfoType) を具体化できません
これで理由の質問に答えましたが、これを回避する方法があるかどうかという質問はまだ残っています。
scala - Scala 2.10 でアノテーションを反映するには?
特性の値に関連付けられた注釈があるかどうかを調べようとしています。Scala 2.10-M7 リフレクション API を確認した後、getAnnotationsメソッド ( Symbolにあります) が有力な候補になると思いましたが、次の REPL セッションに示されているように、空のリストを返しています。
それらの「注釈」は、私が対処しようとしているのと同じ注釈ですか? aにWの注釈が付けられているかどうかを知るにはどうすればよいですか?
scala - scala 2.10 の Option.fold
scala 2.10.0-M7 を使用した次のセッションでは:
私は、コンパイラが不平を言うのではなく、共通のスーパータイプ (つまり A) を見つけることを期待しています。それは一般的な型推論の制限ですか、それとも Option.fold の定義方法の結果ですか?
ありがとうございました。
scala - Scala 2.10 リフレクション: ClassSymbol.isCaseClass は scala コンソールでは機能しますが、スクリプト/アプリでは機能しません
私は Scala 2.10.0-M7 でリフレクションをいじっていてClassSymbol.isCaseClass
、scala コンソールで期待どおりに動作するメソッドに出くわしましたが、Java アプリケーションまたは scala スクリプトとして実行された場合はそうではありません。
私は次TestScript.scala
のように定義しました:
コマンドライン呼び出しで実行すると
私はこの出力を得る:
代わりに、インタラクティブな scala シェルにコードを入力するか、次のようにロードすると:
次の正しい出力が得られます。
それをコンパイルして標準のJavaアプリとして実行すると、再びfalse
結果が得られClassSymbol.isCase
ます。
私は何が欠けていますか?scala コンソール環境と Java ランタイム環境の違いは何ですか? 実際のアプリケーションで正しい結果を得るにはどうすればよいですか?