4

Scala 2.10 の一部であるScala Macrosを試していますが、(sbt を使用して) コンパイルしようとすると、次のエラーが発生します。

[error] .../API.scala:9: not enough arguments for constructor OAuth:
(requestMethod: String, consumerSecret: String, consumerKey: String,
signatureMethod: String, version: String)jm.oauth.OAuth
[error]   private val oauth = new OAuth(OAuth.POST, oauthConsumerSecret,
oauthConsumerKey, OAuth.HMAC_SHA1)

OAuthクラスの実装については、こちらを参照してください。

scala 2.10 とオプションのパラメーターの間に非互換性はありますか?

scala 2.9.1 でコンパイルされたまったく同じコードは、完全に機能しました。

4

1 に答える 1

7

このクラス定義のみを含むファイルを作成する場合:

class Optional(x: Int = 0)

次に、Scala 2.9.2でコンパイルjavapし、結果のクラスで実行すると、次のように表示されます。

public class Optional implements scala.ScalaObject {
  public static final int init$default$1();
  public Optional(int);
}

2.10.0-RC2とjavapそれを使用して再度コンパイルすると、代わりに次のようになります。

public class Optional {
  public static int $lessinit$greater$default$1();
  public Optional(int);
}

つまり、2.10ではデフォルトの引数は完全に問題ありません。Scalaの主要バージョン間のバイナリ互換性の欠如の具体例に出くわしただけです。

于 2012-11-12T01:01:16.787 に答える