Tag: scala

从Maven迁移到SBT

如您所知,SBT与Maven以某种方式兼容 – SBT可以识别简单的Maven POM,并可以使用它们中指定的依赖项和存储库。 然而, SBT维基说,如果在SBT项目定义中指定了内联依赖关系,POM将被忽略(所以在这种情况下使用两者是不可能的): 当内联依赖声明存在时,Maven和Ivyconfiguration(pom.xml和ivy.xml)将被忽略。 有谁知道,如果从Maven POM到SBT项目定义的任何一种转换器存在(将POM的XML转换为项目定义Scala代码)? 我正在考虑编写这样的脚本(这将有助于将我的旧Scala / Maven项目迁移到SBT),但首先要知道,如果这个function已经存在。

如何重新加载Scala REPL中的类或包?

我几乎总是有一个或两个开放的Scala REPL会话,这使得对Java或Scala类进行快速testing变得非常容易。 但是如果我改变一个类并重新编译它,那么REPL会继续加载旧的。 有没有办法让它重新加载类,而不是必须重新启动REPL? 只是举一个具体的例子,假设我们有Test.scala文件: object Test { def hello = "Hello World" } 我们编译它并启动REPL: ~/pkg/scala-2.8.0.Beta1-prerelease$ bin/scala Welcome to Scala version 2.8.0.Beta1-prerelease (Java HotSpot(TM) Server VM, Java 1.6.0_16). Type in expressions to have them evaluated. Type :help for more information. scala> Test.hello res0: java.lang.String = Hello World 然后我们改变源文件 object Test { def hello = "Hello […]

自动化的Java到Scala源代码转换?

(是的,我知道我可以从Scala调用Java代码,但这是毫无意义的;我想删除Java代码,而不是保留它,不得不看它并永远保持它!) 是否有任何公用程序将Java源代码转换为Scala源代码? 我相信在理论上应该有可能以最小的损失完成。 我发现这个,但它似乎不活动,可能是越野车/不完整的… http://sourceforge.net/projects/java2scala/ 任何替代品?

Nashorn和Scala未来要JS Promise转换

我有一个在Scala和React/Flux前端实现的服务器端。 我的服务返回Futures ,他们在Scalatra的AsyncResult中处理JSON响应。 对于同构/服务器端渲染设置我不想改变服务被阻止,所以我开始与Scala Future-> java.util.function.Function转换显示在这里 。 但Flux的调度员想要JS Promise。 到目前为止,我在这张幻灯片68-81中发现了相当复杂的探测方式 有没有build议的方式来处理这个Scala Future – > JS Promise转换?

我如何定义将由不可变集合比较方法使用的自定义相等操作

我有一个不可变的类Set [MyClass] Set,我想使用Set方法intersect和diff,但我希望他们使用我的自定义equals方法testing相等性,而不是默认的对象相等性testing 我已经尝试覆盖==运算符,但它没有被使用。 提前致谢。 编辑: 交集方法是GenSetLike的具体值成员 规格: http : //www.scala-lang.org/api/current/scala/collection/GenSetLike.html src: https : //lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src //library/scala/collection/GenSetLike.scala#L1 def intersect(that: GenSet[A]): Repr = this filter that 所以交叉口是使用过滤方法完成的。 又一个编辑: filter在TraversableLike中定义 规格: http : //www.scala-lang.org/api/current/scala/collection/TraversableLike.html src: https : //lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src//library/scala/collection/TraversableLike.scala#L1 def filter(p: A => Boolean): Repr = { val b = newBuilder for (x <- this) if (p(x)) b += […]

如何在Scala中使用开关/shell(简单模式匹配)?

我发现自己陷在了一件很平凡的事情上: – ] 我有一个枚举: object Eny extends Enumeration { type Eny = Value val FOO, BAR, WOOZLE, DOOZLE = Value } 在代码中,我必须有条件地将其转换为数字(varianr-number的对应关系不同)。 我写: val en = BAR val num = en match { case FOO => 4 case BAR => 5 case WOOZLE => 6 case DOOZLE => 7 } 这给了我一个“无法访问的代码”编译器错误的每个分支,但无论是第一个(“案例FOO => 4在这种情况下)。 我究竟做错了什么?

通过Gradle进行testing时logging

在testing时,Gradle似乎将stdout / stderrredirect到project_dir/build/reports/tests/index.html 。 有没有办法避免这种redirect,并把东西打印到控制台呢? 附加信息: 这是一个Scala 2.9.1项目。 我正在使用slf4s进行日志logging。

斯卡拉的“::”运算符,它是如何工作的?

在Scala中,我可以创buildcaseclass, case class Foo(x:Int) ,然后将它放在如下所示的列表中: List(Foo(42)) 现在,这里没什么奇怪的。 以下对我来说很陌生。 operator ::是一个列表上的函数,对吗? 在Scala中有一个参数的函数,我可以用中缀表示法来调用它。 一个例子是1 + 2是对象Int上的函数(+) 。 我刚才定义的Foo类没有::运算符,那么下面是如何可能的? Foo(40) :: List(Foo(2)) 在Scala 2.8 RC1中,我从交互式提示中得到以下输出: scala> case class Foo(x:Int) defined class Foo scala> Foo(40) :: List(Foo(2)) res2: List[Foo] = List(Foo(40), Foo(2)) 我可以继续使用它,但是解释是什么?

无法find速度模板资源

只是一个基于Maven结构的简单速度独立应用程序。 这是用Scala编写的代码片段,用于在${basedir}/src/main/resources文件夹中呈现模板helloworld.vm : com.ggd543.velocitydemo import org.apache.velocity.app.VelocityEngine import org.apache.velocity.VelocityContext import java.io.StringWriter /** * @author ${user.name} */ object App { def main(args: Array[String]) { //First , get and initialize an engine val ve = new VelocityEngine(); ve.init(); //Second, get the template val resUrl = getClass.getResource("/helloworld.vm") val t = ve.getTemplate("helloworld.vm"); // not work // val t = ve.getTemplate("/helloworld.vm"); […]

保护Play框架和OAuth2上的REST API

我正在开发一个Play 2.0和Scala的应用程序,它公开了一些REST API。 这些API将被不同的应用程序,Web,移动或桌面使用,所以OAuth协议(OAuth2)似乎是最合适的。 另外,我会最初使用Facebook等外部OAuth提供程序。 我的问题是:授权个别REST调用的确切stream程是什么? 我应该期待在服务器端每次打电话,我应该与外部提供商检查什么? 使用OAuth1,我知道客户端发送了带有所有签名请求的令牌,但是使用Oauth2我认为不是这样,我想如果一个令牌没有签名是不可信的,所以我不认为这是stream量。