問題タブ [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.

0 投票する
1 に答える
383 参照

java - Scala TypeTag を java.lang.reflect.Type に

scala (2.10+) には、scala TypeTagjava.lang.reflect.Typeに変換するための定義済み関数がいくつかあるのだろうか。

この質問を見たことがありますが、実行時に完全なジェネリック型情報が必要であることに注意してください。

そうでない場合でも、Java Type のカスタム実装が既にあるので、自分自身でマッピングを実装できます。

0 投票する
2 に答える
4788 参照

scala - Scala - 実行時に外部ファイルからコードをコンパイルする方法は?

プログラムの実行をカスタマイズできるパラメーターとして Scala ファイルを受け入れる Scala プログラムを設計したいと考えています。特に、プログラムによって呼び出されるメソッドの実装を含む実行時ファイルを提供したいと考えています。外部ファイルに適切に依存し、実行時にそのメソッドを動的に呼び出すにはどうすればよいですか? 理想的には、これらのファイルがプログラムのメソッドとクラスに依存できるようにしたいと考えています。

シナリオ例: 行を含む関数がありval p: Plant = Greenhouse.getPlant()、メソッドGreenhouseを持つクラスは、getPlant実行時に提供されるファイルの 1 つで定義されます。そのファイルでは、メソッドは元のプログラムで定義されているを返しgetPlantます。ファイルが実行時にのみ結合され、コンパイル時には結合されないと仮定して、この相互依存性をどのように達成 (または概算) しますか?RoseRose <: PlantPlant

0 投票する
1 に答える
62 参照

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] 見つからないことを受け入れます。また、それはケース クラスではなくトレイトであるため、ウィッチ コード コンパイラでは変換が行われます。unapplyMethodSymbol

0 投票する
1 に答える
104 参照

scala - scala tools nsc: コンパイラ設定でコンパイラ フラグを設定する

次のコードがあります。

非推奨、機能の警告を追加し、暗黙的な変換とマクロを明示的に有効にしたいと考えています。

0 投票する
1 に答える
155 参照

scala - プレゼンテーション コンパイラ: 複数の引数を持つメソッド呼び出しの型補完

askReloadでソースをコンパイラにロードし、その後に askTypeCompletion を呼び出そうとします。(ドット)。最初のケース (2 つの引数を持つメソッド) の補完は機能しませんが、1 つの引数を持つメソッド呼び出しの補完は期待どおりに機能します。

興味深いのは、コードがあるかどうかです:

ドットの後の補完は再び機能しませんが、ドットの後にコンマを入力してドットの後にもう一度補完しようとすると、機能します:Option("").cata(x => x.<works!>,) バグですか、それとも予想される動作ですか?

0 投票する
1 に答える
234 参照

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 に追加する

ソリューションを検索するためのサンプル プロジェクト

0 投票する
1 に答える
114 参照

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 をビルドすることは可能ですか? 何を別の方法で行う必要がありますか?

0 投票する
1 に答える
590 参照

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

実際には何の効果もありませんでしたし、問題はまだ同じです。

何が起こっているのかをトラブルシューティングするにはどうすればよいですか? フェーズタイパーが無期限にぶら下がっている理由を理解し始める場所がわかりません。

0 投票する
2 に答える
357 参照

scala - 注釈なしで末尾再帰が適用されたときに警告する Scala コンパイラ フラグはありますか?

アノテーションで指示していない関数の 1 つに末尾再帰を適用すると、コンパイラに警告してもらいたいです。これは可能ですか?

動機:私は論理エラーの問題として無限ループを書くことはめったにありませんが、タイプミスをしてしまいました (はい、可能です)。通常、再帰的な無限ループは、スタック オーバーフロー例外の何が問題なのかを教えてくれるだけですが、テールを再帰的にコンパイルした場合は、ハングするだけです。

デフォルトのパラメーターを持つケースクラスと組み合わせてキーワードを忘れることnewは、私がばかげて2回つまずいた良い例です:

SO なしで無限ループを引き起こしますが、そうでdef apply(a: Int): A = new A(a)はありません。