問題タブ [scala-2.7]

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 投票する
10 に答える
80279 参照

java - Java コレクションを Scala コレクションに変換する

スタック オーバーフローの質問Scala と同等の new HashSet(Collection)java.util.Listに関連して、Java コレクション (たとえば) を Scala コレクションに変換するにはどうすればよいListですか?

私は実際に Java API 呼び出しをSpring の SimpleJdbcTemplateに変換しようとしています。これは a を返し、java.util.List<T>Scala immutableに変換しますHashSet。たとえば、次のようになります。


これはうまくいくようです。批判大歓迎です!

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

lift - Scala 2.7.7 および LIFT 1.1-SNAPSHOT を使用した不正な継承コンパイル エラー

私はJDK 1.6.0_16とScala 2.7.7を使用し、mavenでコンパイルしています。

実行するmvn clean compileと 4 つのエラーが発生しますが、異なるモデルでは同じです。

[エラー] C:\Users\owner\workspace\ResumeApp\src\main\scala\jblack\resumeapp\lift\ model\ContactInfoModel.scala:13: エラー: 不正な継承。

[情報] 自己型 jblack.resumeapp.lift.model.ContactInfoModel は net.liftweb.mapper.CRUDify[Long,jblack.resumeapp.lift.model.ContactInfoModel] の自己型 net.liftweb.mapper.CRUDify[ に準拠していませんLong,jblack.resumeapp.lift.model.ContactInfoModel] with jblack.resumeapp.lift.model.ContactInfoModel with net.liftweb.map per.KeyedMetaMapper[Long,jblack.resumeapp.lift.model.ContactInfoModel]

[INFO] with CRUDify[Long, ContactInfoModel] {

そして、これは私のコードです:

何が間違っているのかわかりません。

残念ながら、ナイトリー プラグインを Eclipse にインストールしたため、IDE 2.7.7 をインストールできず、maven でしかコンパイルできません。

使用方法に問題はありCRUDifyますか?

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

scala - 奇妙な動作: Scala Actors 2.7.7 と 2.8-Snapshot

私は 18 歳の研修生で、大好きな scala を発見しています :-)。scala アクターに慣れるために、いくつかのギアと 1 つのコントローラーを使用した小さなシミュレーションを作成しました。ActorApplication は、ランダムな速度で N 個の歯車を作成します。コントローラは同期速度を計算し、ギア アクターを開始します。ギアは、この特定の速度に段階的に同期します (1+ または 1-)。すべてのギアが同期速度に達した時点で、シミュレーションは終了します。scala 2.7.7 でシミュレーションを開発しましたが、期待どおりに動作しました (以下の出力を参照)。しかし、現在の 2.8.0-SNAPSHOT に切り替えたところ、奇妙な動作を発見しました。これはコードです:

上記のコードは、scala 2.7.7 で次のような出力を生成します。

さまざまなアクター (ギアとコントローラー)の交互の出力を見ることができます。しかし、scala 2.8 に変更すると、次のような出力が得られます。

アクター間の交互作用がはるかに少ないことがわかります。ギアが動作している間、コントローラーがブロックされていると思われます。誰かがこの動作を説明できますか? ありがとうフィリップ

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

scala - 巨大な地図のための不変の地図の実装

数十万のアイテムを追加/削除することを期待できる不変のマップがある場合(非常に短い期間(数秒など))、標準は悪い考えですか?ある瞬間のマップの最大サイズがわずか256Mbになるように、1Gbのデータを10秒未満でマップに渡したいとしましょう。HashMap

マップはある種の「履歴」を保持しているように見えますが、これは更新/アクセスのみのプライベートメンバー変数であるため、常に最後に更新されたテーブルにアクセスします(つまり、マップを渡しません)。Actor反応の中から。

基本的に、このデータ構造は、短時間で大量のデータを読み取るときにJVMのメモリが不足するという問題について、(部分的に)障害があるのではないかと思います。

別のマップ実装を使用したほうがよいでしょうか。もしそうなら、それは何ですか?

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

generics - Java コードの "? extends" での Scala 型推論の失敗

次の単純な Java コードがあります。

これを Java から次のように呼び出すことができます。

しかし、Scala から同じことをしようとすると、次のようになります。

次のエラーが表示されます。

エラー: 型の不一致
が見つかりました:lang.this.class[scala.this.Predef.String]
が必要です: lang.this.class[?0] forSome{ type ?0 <: ? }
val sq = Query.newQuery().refine(classOf[文字列])

これは、正しい型パラメーターを挿入することによってのみ修正されます!

なぜscalaは私の議論からこれを推測できないのですか? Scala 2.7を使用していることに注意してください

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

scala - Scala用のIntelliJ IDEA 9.0.1で「Hello World」で立ち往生

私は 2.x から Eclipse を使用しており、IDE は一般的に 20 年以上使用しています (80 年代後半の Turbo Pascal と Turbo C 以来!)。

(その前文は、「私は馬鹿ではない」ということを暗示しているはずです...しかし、私がそれを読むほど賢くは聞こえません... LOL :-] )

現在、IntelliJ 9.0.1 で Scala デバッガーを使用しようとしています。環境が正しく設定されているかどうかを確認するための古いスタンバイ、「hello world」トリックに辞任しました。

念のため、このバージョンも試しました。

残念ながら、この単純な Scala の例でさえも実行できません。最終的にはブレークポイントを入れたいと思っていますが、今のところは実行するだけで十分です。私は Java 1.6u20 と Scala プラグイン 0.3.473 (2010 年 1 月) を持っています。以下のエラーは、私の経験をまとめたものです。

代替テキスト

何が間違っている可能性がありますか?

ありがとう

0 投票する
9 に答える
32829 参照

scala - IntelliJ IDEA で Scala を使用する方法 (または、Scala で動作する IDE を入手するのがなぜ難しいのですか)?

私は最近、Eclipse で Scala を使用することをあきらめました (補完などの基本的な機能は機能しません)。だから今私はIntelliJを試しています。私はあまり遠くに行っていません。

私はプログラムを編集することができました (構文の強調表示と補完の範囲内で... やった!)。しかし、最も単純な「Hello World」でさえ実行できません。これは元のエラーでした:

しかし、それは IDEA 9.0.1 の昨日のことです。下記参照...

アップデート

今日、私は IntelliJ 9.0.1 をアンインストールし、Scala プラグインの 4/14 安定バージョンを含む 9.0.2 Early Availability をインストールしました。

次に、ウィザードを使用してプロジェクトを最初からセットアップします。

  • ゼロからの新しいプロジェクト
  • JDK は 1.6.u20 です
  • グローバル/モジュールの代わりにデフォルト(プロジェクト)を受け入れます
  • プロジェクトの lib フォルダーへの Scala 2.8.0beta1 のダウンロードを受け入れる

新しいクラスを作成しました:

私の努力のために、私は今、真新しいエラーを持っています:)

ここにあります:

Scalac 内部エラー: クラス java.lang.ClassNotFoundException [java.net.URLClassLoader$1.run(URLClassLoader.java:202)、java.security.AccessController.doPrivileged(Native Method)、java.net.URLClassLoader.findClass(URLClassLoader.java) :190)、java.lang.ClassLoader.loadClass(ClassLoader.java:307)、sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)、java.lang.ClassLoader.loadClass(ClassLoader.java:248) 、java.lang.Class.forName0(ネイティブメソッド)、java.lang.Class.forName(Class.java:169)、org.jetbrains.plugins.scala.compiler.rt.ScalacRunner.main(ScalacRunner.java:72) ]

最終更新

9.0.2 EA をアンインストールして 9.0.1 を再インストールしましたが、今回はデフォルトの 2.7.6 ではなく 2.7.3 バージョンの Scala を使用しました。これは、2.7.3 が IntelliJ Web サイト (スクリーンショットは、彼らが実際にこのバージョンをテストしたことを証明していると思います!)。今、すべてが動作します!!!

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

initialization - Scala での 2 次元配列の初期化

(Scala 2.7.7:) 私は 2 次元配列に慣れていません。配列は変更可能ですが、サイズが 3x4 の 2d-Array を指定するにはどうすればよいですか。次元 (2D) は固定されていますが、次元ごとのサイズは初期化可能です。私はこれを試しました:

次のエラーが表示されます: :11: エラー: 値の更新は Char フィールド (r) = spl.map (_.charAt (0)) のメンバーではありません

Java の場合は、はるかに多くのコードになりますが、その方法はわかっているので、意味を示します。

fraese.fld は、たとえば次のようになります。

私はいくつかのステップを広げます

しかし、「プット」をどのように実装しますか? または、2D-Array を実装するより良い方法があります。はい、one-dim-Array を使用して作業できます

しかし、私はより 2D っぽい記法を好みます。

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

regex - Scalaでより大きな文字列から有効なメールを抽出する方法

私のscalaバージョン2.7.7

より大きな文字列からメールアドレスを抽出しようとしています。文字列自体はフォーマットに従いません。私が持っているコード:

RegexはRegExBuilderを渡しますが、scalaは渡しません。また、正規表現なしでこれを行う別の方法がある場合は、それも問題ありません。ありがとう!

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

scala - scalaで慣用的なプロパティが通知を変更しましたか?

私は、WPF/silverlight データ バインディングのデータ バインディングで見られるようなもの、つまり INotifyPropertyChanged の実装に代わる、よりクリーンな代替手段 (Scala の慣用句) を見つけようとしています。まず、いくつかの背景:

.Net WPF または Silverlight アプリケーションでは、双方向のデータ バインディング (つまり、UI 要素に変化するような方法で、UI のある要素の値を DataContext の .net プロパティにバインドする) の概念があります。これを有効にする方法の 1 つは、DataContext に INotifyPropertyChanged インターフェイスを実装することです. 残念ながら、これにより、"ModelView" 型に追加するプロパティに対して多くのボイラープレート コードが導入されます。スカラで:

スペースの都合上、INotifyPropertyChanged 型が (AnyRef, String) => Unit 型のコールバックのリストを管理する特性であり、OnPropertyChanged がこれらすべてのコールバックを呼び出して AnyRef として「this」を渡すメソッドであると仮定します。 、および渡された文字列)。これは C# の単なるイベントです。

問題はすぐにわかります。たった 2 つのプロパティに対して大量のボイラープレート コードです。私はいつも代わりにこのようなものを書きたいと思っていました:

ObservableProperty[T] に Value/Value_= メソッドがある場合 (これは私が現在使用しているメソッドです)、次のように簡単に記述できることがわかっています。

しかし、Value メソッドを呼び出す必要なく、ObservableProperty インスタンスを scala の通常の「プロパティ」であるかのように機能させるために、暗黙的または Scala の他の機能/イディオムを使用して最初のバージョンを実装する方法はありますか? 私が考えることができる他の唯一のものは、上記の2つのバージョンのどちらよりも冗長ですが、元のものよりも冗長ではありません: