我正在尝试Scala 宏 http://scalamacros.org/,它们是 Scala 2.10 的一部分,但当我尝试编译(使用 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
class here https://github.com/mariosangiorgio/Scala-OAuth/blob/master/Scala%20OAuth/src/jm/oauth/OAuth.scala.
scala 2.10 和可选参数之间是否有不兼容的情况?
使用 scala 2.9.1 编译的完全相同的代码可以完美运行。
如果您创建仅包含此类定义的文件:
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 版本之间缺乏二进制兼容性的具体示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)