問題タブ [scala-compiler]
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.
java - Scala TypeTag を java.lang.reflect.Type に
scala (2.10+) には、scala TypeTagをjava.lang.reflect.Typeに変換するための定義済み関数がいくつかあるのだろうか。
この質問を見たことがありますが、実行時に完全なジェネリック型情報が必要であることに注意してください。
そうでない場合でも、Java Type のカスタム実装が既にあるので、自分自身でマッピングを実装できます。
scala - Scala - 実行時に外部ファイルからコードをコンパイルする方法は?
プログラムの実行をカスタマイズできるパラメーターとして Scala ファイルを受け入れる Scala プログラムを設計したいと考えています。特に、プログラムによって呼び出されるメソッドの実装を含む実行時ファイルを提供したいと考えています。外部ファイルに適切に依存し、実行時にそのメソッドを動的に呼び出すにはどうすればよいですか? 理想的には、これらのファイルがプログラムのメソッドとクラスに依存できるようにしたいと考えています。
シナリオ例: 行を含む関数がありval p: Plant = Greenhouse.getPlant()
、メソッドGreenhouse
を持つクラスは、getPlant
実行時に提供されるファイルの 1 つで定義されます。そのファイルでは、メソッドは元のプログラムで定義されているを返しgetPlant
ます。ファイルが実行時にのみ結合され、コンパイル時には結合されないと仮定して、この相互依存性をどのように達成 (または概算) しますか?Rose
Rose <: Plant
Plant
scala - ケースバイタイプはscalaでどのように機能しますか?
ケース クラス、パターン マッチング、unapply、PartialFunction については知っていますが、以下のマクロ スニペットについては混乱しています。
MemberScope の Scaladoc http://www.scala-lang.org/api/2.10.4/#scala.reflect.api.Scopes $MemberScope
Collect メソッドは、メソッドがPartialFunction[Universe.Symbol, B]
見つからないことを受け入れます。また、それはケース クラスではなくトレイトであるため、ウィッチ コード コンパイラでは変換が行われます。unapply
MethodSymbol
scala - scala tools nsc: コンパイラ設定でコンパイラ フラグを設定する
次のコードがあります。
非推奨、機能の警告を追加し、暗黙的な変換とマクロを明示的に有効にしたいと考えています。
scala - プレゼンテーション コンパイラ: 複数の引数を持つメソッド呼び出しの型補完
askReloadでソースをコンパイラにロードし、その後に askTypeCompletion を呼び出そうとします。(ドット)。最初のケース (2 つの引数を持つメソッド) の補完は機能しませんが、1 つの引数を持つメソッド呼び出しの補完は期待どおりに機能します。
興味深いのは、コードがあるかどうかです:
ドットの後の補完は再び機能しませんが、ドットの後にコンマを入力してドットの後にもう一度補完しようとすると、機能します:Option("").cata(x => x.<works!>,)
バグですか、それとも予想される動作ですか?
scala - Scala パーサーが最後のブラケットをカットする
結果は次のとおりです。
私は期待しました:
Tree オブジェクトの位置を使用すると、最後の括弧}
(および行末) がありません。text.substring(t.pos.start, t.pos.end)
scala.reflect.api.Trees#Tree オブジェクトからすべてのテキストを抽出する方法はありますか?
アップデート
影響を受ける scala バージョン:
- 2.10.6 - sbt 0.13.x に必要
- 2.11.8
- 2.12.7
scala 2.10.6/2.12.7 の場合、結果は上記の出力と同じです。
プロジェクトを github に追加する
scala - より大きなチュープでscala 2.11.2をコンパイルするには?
このガイドに従って、より大きなタプル (アリティが 22 を超える) で scala 2.11.2 をビルドしようとしました: http://blog.rogach.org/2013/02/scala-tuplicity-comes-to-210.html
scala ライブラリーとコンパイラー、および ant ビルド・ツールをビルドした経験がないので、タグ v2.11.2 の新しい git クローンでスクリプトを実行しようとしましたが、うまくいくことを願っていました。そうではありませんでした。
オンラインでエラーが発生しましたant replacelocker
:
scala 2.11 のビルド方法が変わったようです。ラインの交換方法に関する具体的な情報を見つけることができませんでしたant replacelocker
。
2.9 や 2.10 で可能なように、より大きなタプルで scala 2.11.2 をビルドすることは可能ですか? 何を別の方法で行う必要がありますか?
scala - RegexParser の Phase Typer で Scalac がハングする
私は、とりわけパーサーコンビネーターを備えたscalaプログラムを持っています。これは、 を拡張することによって行われscala.util.parsing.combinator.RegexParsers
ます。Scala 2.10 を使用して開発しましたが、すべて正常に動作していました。
昨日、システムを IntelliJ 14.02 とともに Scala 2.11.4 にアップグレードしました (それは問題ではありません)。
ただし、このプログラムを今コンパイルしようとすると、scalac
この段階でハングします。
scalac: phase typer on MyParser.scala
このコードには何も変更を加えていません。なぜハングしているのか、どこから始めればよいのかわかりません。IntelliJでは、トークンの後にandが続くconstants_def?
or などのパーサー式の後置演算子について警告がありました。 SIP : Language Modularization Featuresのために、次の行を追加しました。structure_def*
?
*
import scala.language.postfixOps
実際には何の効果もありませんでしたし、問題はまだ同じです。
何が起こっているのかをトラブルシューティングするにはどうすればよいですか? フェーズタイパーが無期限にぶら下がっている理由を理解し始める場所がわかりません。
scala - 注釈なしで末尾再帰が適用されたときに警告する Scala コンパイラ フラグはありますか?
アノテーションで指示していない関数の 1 つに末尾再帰を適用すると、コンパイラに警告してもらいたいです。これは可能ですか?
動機:私は論理エラーの問題として無限ループを書くことはめったにありませんが、タイプミスをしてしまいました (はい、可能です)。通常、再帰的な無限ループは、スタック オーバーフロー例外の何が問題なのかを教えてくれるだけですが、テールを再帰的にコンパイルした場合は、ハングするだけです。
デフォルトのパラメーターを持つケースクラスと組み合わせてキーワードを忘れることnew
は、私がばかげて2回つまずいた良い例です:
SO なしで無限ループを引き起こしますが、そうでdef apply(a: Int): A = new A(a)
はありません。