Tag: scala

Scala多模块项目?

我有Java背景和思考学习Scala 。 我喜欢使用Maven一件事是我可以将项目作为多个maven模块。 例? Project/pom.xml /persistence/pom.xml /business/pom.xml /services/pom.xml 关于它的好处是这些模块中的每一个都可以拥有自己的依赖项,并且可以独立测试,而不是运行一个整体应用程序。 我们如何在Scala , sbt或其生态系统中实现类似的function?

Scala无法解析inheritance的Java接口常量成员

Java中的类层次结构: 接口: 集群 , 分类 Kluster类层次结构如下所示 Cluster <- , +– Kluster Classify <- ' 文件: oop / Cluster.java package oop; public interface Cluster { public String HELLO = “hello”; } 文件: oop / Kluster.java package oop; interface Classify { public String GOODBYE = “good bye”; } public class Kluster implements Cluster, Classify { } 文件: […]

播放2.2.1 Java:相当于播放1.X的@beforefilter?

我想实现一个setUserIfPresent ()方法,它将用户对象放入上下文中,如Http.Context.current()。args.put(“user”,user); 应在每个控制器方法之前应用此方法,以便视图可以访问用户的隐式访问权限。 使用Play1,我创建一个BaseController , 在所有请求(@Before filter) 之前 调用此方法,并从此扩展所有其他控制器。 如何使用Java API在play2中实现这样的function? 似乎Scala有些东西,但对Java来说呢? http://www.playframework.com/documentation/2.2.x/ScalaHttpFilters 干杯

Scala期货和`andThen`exception传播

我在scala.concurrent.Future模块中阅读了Scala 2.11.8和andThen函数的文档,它说如下: def andThen[U](pf: PartialFunction[Try[T], U]) (implicit executor: ExecutionContext): Future[T] 将副作用函数应用于此未来的结果,并返回具有此未来结果的新未来。 此方法允许强制执行回调以指定顺序执行。 请注意,如果链接的andThen回调之一抛出exception,则该exception不会传播到后续的andThen回调。 相反,后续的andThen回调将被赋予此未来的原始值。 我不确定它是什么意思是exception不会被传播, andThen也没有提供示例。 例如,如果我做这样的事情: Future.successful { throw new RuntimeException(“test”) } andThen { case _ => println(“test”) } 在Scala REPL中我得到: java.lang.RuntimeException: test … 32 elided 所以exception被传播了。 有人可以提供一个有意义的例子,这究竟意味着什么,以及是否安全使用andThen代码,我抛出exception,我想从中恢复。 谢谢。

捆绑多个工件进行部署?

这是基于这个答案的后续行动。 我的结构看起来像 $ ls service/target/ classes lib maven-status surefire-reports classes.-1194128992.timestamp maven-archiver service-1.0-SNAPSHOT.jar 和看起来像 $ ls service/target/lib/ activation-1.1.jar akka-http-spray-json-experimental_2.11-1.0.jar mail-1.4.7.jar scala-reflect-2.11.2.jar akka-actor_2.11-2.3.12.jar akka-parsing-experimental_2.11-1.0.jar manager-1.0-SNAPSHOT.jar scala-xml_2.11-1.0.2.jar akka-http-core-experimental_2.11-1.0.jar akka-stream-experimental_2.11-1.0.jar reactive-streams-1.0.0.jar scalatest_2.11-2.2.5.jar akka-http-experimental_2.11-1.0.jar config-1.2.1.jar 作为mvn clean install一部分,我想捆绑应该包含的my-deployment-artifact service-1.0-SNAPSHOT.jar lib/* (all the jars here) 如何将其创建为tar或.tar.gz并使用mvn clean install ?

Scala,Maven和预处理器

我知道Java中预处理器和宏的所有哲学论据。 我不同意,因为有些人可能滥用语言function,所以应该排除它。 我想在我的Java和Scala代码中包含__FILE__和__LINE__宏以实现高效的日志记录。 由于运行时性能影响,任何使用Exception都是不可接受的。 那些认为可以在“生产代码”中关闭日志记录的人应该听取Brian Kernighan的建议: 删除错误消息“现在程序正在运行”就像在地面上戴着降落伞一样,但是一旦你在空中就把它取下来。 这些宏是否有可能使其成为语言? 如果没有,有没有办法使用Maven运行像m4这样的预处理器? 谢谢。

与Java内部类相比,Scala闭包 – >最终VS var

我首先问过这个关于在Java中使用带有匿名内部类的final问题: 为什么我们使用带有匿名内部类的final关键字? 我实际上正在阅读马丁奥德斯基的Scala书。 似乎Scala简化了很多Java代码,但对于Scala闭包,我注意到了一个显着的差异。 在Java中,我们使用匿名内部类“模拟”闭包,捕获最终变量(将被复制到堆上而不是堆栈中),在Scala中我们可以创建一个可以捕获val的闭包,但是也是一个var,因此在闭包调用中更新它! 所以我们可以使用没有final关键字的Java匿名内部类! 我还没读完这本书,但是现在我没有找到关于这种语言设计选择的足够信息。 有人能告诉我为什么马丁奥德斯基,他似乎真正关心function的副作用,选择闭合能够捕获val和var ,而不仅仅是val ? Java和Scala实现的优点和缺点是什么? 谢谢 相关问题: 使用Scala闭包,何时捕获的变量开始存在于JVM堆上?

为抽象类创建Read 和Write

我正在为我的Java类创建Reads和Writes以使用Play Framework的JSON库。 我的一个类有一个抽象类字段。 ConcreteObj.java public class ConcreteObj { private AbstractObj someField; public ConcreteObj(AbstractObj someField) { this.someField = someField; } public AbstractObj getSomeField() { return this.someField }; … 读写 implicit val ConcreteObjReads: Reads[ConcreteObj] = (JsPath \ “someField”).read[AbstractObj].map{x: AbstractObj => new ConcreteObj(x)} implicit val ConcreteObjWrites: Writes[ConcreteObj] = (JsPath \ “someField”).write[AbstractObj].contramap{x: ConcreteObj => x.getField} 然而,下一步,创建一个Reads[AbstractObj] ,对我来说没有意义,因为抽象类无法实例化。 我认为Writes[AbstractObj]看起来像: implicit […]

转义Scala中Java互操作性的下划线

假设我有一些Scala代码调用一个使用_作为标识符的Java库(我这样做很长)。 这是一个简化的例子: public class StupidUnderscore { public static String _() { return “Please give me a real name!”; } } 没问题,对吧? 逃避吧: scala> StupidUnderscore.`_` res0: String = Please give me a real name! 这一直有效,直到今天早上我尝试更新到Scala 2.10.2: scala> StupidUnderscore.`_` :1: error: wildcard invalid as backquoted identifier StupidUnderscore.`_` ^ 这是由于2.10.1中出现的更改并修复了此问题 。 从提交消息: 禁止_作为标识符,它只能带来不良。 嗯,当然,但我不知道为什么这意味着我无法摆脱它 – 我认为这是反引号的意思。 我是否必须编写Java包装器才能使其工作? 还有其他方法可以在Scala中引用Java库的_方法吗? […]

如何使用play框架项目中的相对路径访问资源文件?

我的play框架项目使用像我在资源目录下的CSV文件这样的资源文件,我直接在play project root下创建它,因此它与app,public等其他目录处于同一级别。从Java或Scala文件中我如何打开这样的文件使用相对于项目根目录的路径? 在创建war并部署应用程序时,此路径也应该有效。