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

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

scala - 型インスタンスから暗黙を見つける

Typeインスタンスを通常の Scala 型として使用することは可能ですか? たとえば、次のスニペットでは、tpeを使用してpiを見つけることができますか?

私の目標を達成するための簡単な解決策がないこと、およびtpe暗黙的に [Double]に変換するための一種のファクトリが必要になることを恐れています。とにかく、リフレクション型を Scala コードに統合することは非常に強力であり、見た目ほどクレイジーではないと思います。

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

scala - Scala 2.10でリフレクションを介してタイプパラメーターを見つけますか?

タイプタグを使用して、いくつかのタイプのパラメータを確認できます。

しかし、一般的な方法で、プログラムでその「Int」をそこから取り出す方法を完全に理解することはできません。

(私はREPLを1時間歩き回って、Typeの順列を試し、そこから何が得られるかを確認しています...これが「リスト」であることを示す多くの情報を取得しますが、見つけて幸運を祈りますその"Int"!そして私はtoString()出力の解析に頼りたくありません...)

Daniel Sobralは、ここで優れた(いつものように)簡単な概要を示しています。ここでは、彼は私が探しているものに興味をそそるほど近づいていますが、(明らかに)その特定のクラスについて、そのタイプが尋問:

しかし、宣言されたメソッドのリストをルート化し、そのうちの1つがタグの現在のタイプ情報をどこかにキャプチャする(したがって公開する)ことを含まない、より一般的なものを望んでいます。

Scalaが「List[Int]」を簡単に印刷できるのなら、文字列パターンマッチングに頼らずに、なぜその「Int」の部分を見つけるのが難しいのでしょうか。それとも、本当に、本当に明白な何かが欠けているだけですか?

Grr..。

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

scala - Scala 2.10リフレクションを使用してメソッド引数(およびタイプ)を検索しますか?

私は(ここから)Scalaメタデータを取得するためにエクストラクターを使用することを学びました。私も気づきましたUniverse.MethodTypeExtractor

作成するエクストラクタクラスと構文とのパターンマッチング MethodType(params, respte)ここで、paramsはメソッドのパラメータシンボルの空の可能性のあるリストであり、restpeはメソッドの結果タイプです。

素晴らしい!私が欲しいもののように聞こえます!(?)

しかし、どのように取得するのMethodTypeですか?(そして、なぜこれは、メソッド「Def」または「Ref」とは対照的に、メソッド「type」(メソッド「types」ですか?)のエクストラクタですか?)

それとも、いわば完全に「間違った木を吠えている」のでしょうか。

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

scala - Scala(2.10)タイプのタグまたはシンボルからJavaクラスを取得する方法はありますか?

これは私を近づけるように見えますが、(a)完全ではありません(以下を参照)、および(b)名前の文字列表現を使用することはハックのように感じます...

この情報にアクセスするためのより直接的な方法がありませんか?それとも、Javaクラス情報の並列セットを保持するためだけに、ある時点でクラス情報も必要な場合は、それが最善でしょうか?(うーん!)

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

scala - 2.10 の Scala REPL breakIf の代替

インタラクティブなデバッグのために REPL コードでメソッドを使用することについてここで読んでいましたが、Scala 2.10 で削除されたと言っているこの投稿を見つけました。残念ながら、その投稿にはコードが削除された理由が説明されていません。breakIfbreakbreakIfILoop

これを行うためのより良い方法があるため、これらの機能は削除されたと思います。もしそうなら、誰かが私を啓発してもらえますか?

0 投票する
3 に答える
35603 参照

scala - Scala の「後置操作」

30分探しましたが、まだわかりません。

SIP: Modularizing Language Featuresには、Scala 2.10 で明示的に「有効化」する必要がある多くの機能があります ( import language.feature)。その中には がありpostfixOps、どこにも参照が見つかりません。この機能は正確に何を可能にしますか?

0 投票する
0 に答える
2102 参照

scala - Scala 2.10 RC1 に対してプロジェクトをビルドするときの scala.reflect.internal.MissingRequirementError

Scala 2.10.0 RC1 に対して古いプロジェクトをビルドしようとしています。これを行うと、次のエラーが表示されます。

完全なスタック トレースはこちら: https://www.refheap.com/paste/6228

このエラー メッセージは何を意味しますか? クラスパスにいくつかのライブラリがありませんか?

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

scala - TypeTagを保存し、後でそれを使用してタイプをAnyに再アタッチする方法(Scala 2.10)

カスタムの異種リストとマップを作成しようとしています。マニフェストの使用に関する例はありますが、Scala 2.10では非推奨であり、TypeTags(またはClasstags)を使用する必要があります。マップの場合、(たとえば)タプルString->(TypeTag [_ <:Any]、Any)を使用して、AnyのTypeへのバインドを保持できるようです。

私の問題は、回復されたTypeTagと未定義のTから取得して、TypeTag.tpeのインスタンスを返すことができるようにする方法です-コード内のある時点で //** How do I use saved typeTag to define T here?**

記述されているように、メソッドgetにはコンパイラエラーはありませんが、TはNothingに設定され、Some(Nothing)を返します。コメントアウトされた行を機能させたいと思い case Some( x ) => // println( "Get 2*'pi'=" + x*2 )ます。「値*はNothingのメンバーではありません」というメッセージが表示されます。もっとコンパクトに書くことができると思いますが、そうすることで、IDEにマウスオーバーして、ステップバイステップで進むことができます。関連する質問があります-Scala:TypeTagとは何ですか?どのように使用しますか? しかし、それは「ラストマイル」にはならないようです-Anyのタグを付け直します。

これを行う方法?

これが私がこれまでに持っているコードです:

0 投票する
4 に答える
1005 参照

scala - Scala: ボイラープレートのない pimping

Pimp my Libraryパターンを多用しており、ボイラープレートを削除したいと考えています。たとえば、PrettyPrint というトレイトがあるとします。

Int と Double をポン引きしたい場合は、次のようなコードを書く必要があります。

上記では、ボイラープレートとして分類します: 1) 暗黙的な変換の名前、2) "new" キーワード、3) おそらく引数名 "self"、4) おそらく "implicit" キーワード。私はむしろこのようなものを書きたい:

上記のコードの右側では、「self」という名前が変換引数であると想定されています。

これを行う方法についてのアイデアはありますか?

いくつかのメモ:

1) 必要に応じて Scala 2.10 を使用します。

2)私の知る限り、Scala 2.10 の新しい暗黙のクラスは十分ではありません。これは、暗黙的なクラスごとに暗黙的な変換が 1 つしかないためです。つまり、PrettyPrint が 2 回宣言されているため、次のようなコードはコンパイルされません。

0 投票する
4 に答える
4141 参照

scala - Scala2.10TypeTagの使用法

私は新しいscalaリフレクションAPIを掘り下げていますが、次のスニペットが期待どおりに機能しない理由を理解できません。与えられた階層(私ができる限り単純化しようとしました):

f与えられたタイプのオブジェクトをフィルタリングするメソッドを期待しています。したがって、次のスニペットはSeq[Foo]

そして、実際には返されますSeq[Foo]が、他のメッセージはフィルタリングされていないため、バグのように聞こえます。

質問。私はTypeTag間違って使用していますか、それとも新しいリフレクションAPIの欠陥ですか?

PS0。で試してみましScala 2.10.0-RC12.10.0-RC2

PS1。回避策はに置き換えることTypeTagです。Manifestそのため、次のコードcollectをシーケンスに使用するとList(Foo(1))、期待どおりに返されます。

更新Scala 2.10.0-RC2:新しいリリースと同じです。