我正在使用Scala 2.11.1和sbt 0.13.5.
我有一个sbt插件,其中包含一个帮助函数来创建输入任务,如下所示(实现被删除,因为它与问题无关):
def register(name: String, description: String): Def.Setting[InputTask[Unit]] = {
InputKey[Unit](name, description) <<= Def.inputTask {
println("test")
}
}
Run Code Online (Sandbox Code Playgroud)
此函数在Scala 2.10.4中编译并正常工作,但是一旦切换到2.11.1,它就会失败并出现以下错误:
无法扩展由以前版本的Scala编译的宏
在Def.inputTask宏观只是打破了斯卡拉2.11.1,还是我失去了一些明显的细节?
现在,上面的函数驻留在可以想象的最简单的sbt插件中.完全没有依赖关系.
我在分布式环境中部署Play应用程序,由远程MySQL数据库支持.具体来说,应用程序托管在heroku上,数据库位于Amazon RDS上(尽管这实际上适用于任何远程数据库连接).由于数据库不仅仅在localhost上,我更希望远程MySQL连接是通过SSL进行安全的.
鉴于要信任的CA证书,只有在可以验证主机证书的情况下,如何配置Play应用程序才能通过SSL连接到MySQL服务器?
假设这是当前的数据库配置:
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://url.to.database/test_db"
db.default.user=root
db.default.password="...."
Run Code Online (Sandbox Code Playgroud) 我有一个动态改变的文件输入读数.数字是Int或Double.为什么Scala会.0在每个Double数字后打印?有没有办法让Scala以与读取它相同的方式打印它?
例:
var x:Double = 1
println (x) // This prints '1.0', I want it to print '1'
x = 1.0 // This prints '1.0', which is good
Run Code Online (Sandbox Code Playgroud)
我无法使用,Int因为我得到的一些输入是Doubles.我不能使用String或AnyVal因为我执行一些数学运算.
谢谢,
当我尝试在正常的sbt项目而不是播放项目中使用Play WS库时,我必然会使用play.api.Play.current并获得 java.lang.RuntimeException:" 尝试运行应用程序时没有启动应用程序" .
播放框架JAVA:
我试图获取请求控制器功能的URL的名称.例如,我有一条路线
GET /mypage controllers.Mypage.myfunction()
我有另一个请求相同控制器的页面
GET /anotherpage controllers.Mypage.myfunction()
有没有办法在控制器中找到请求是来自/mypage还是来自/anotherpage?
谢谢
当我在Scala交互式控制台中输入内容时,控制台会打印语句的结果.如果结果太长,控制台会裁剪它(向右滚动以查看它):
scala> Array.fill[Byte](5)(0)
res1: Array[Byte] = Array(0, 0, 0, 0, 0)
scala> Array.fill[Byte](500)(0)
res2: Array[Byte] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …Run Code Online (Sandbox Code Playgroud) Scala集合有sortBy方法.这种方法稳定吗?
def sortList(source : List[Int]) : List[Int] =
source.sortBy(_ % 2)
Run Code Online (Sandbox Code Playgroud)
这个例子总能保留秩序吗?
我安装了最新版本的Scala IDE for Eclipse
http://scala-ide.org/download/current.html
现在我尝试使用Scala编辑器打开一个.scala.html文件,并Failed to create the part's controls说明下面详述的错误.故障排除说启用JDT编织,已经启用.
另一个引用此错误的网站:https://github.com/scala-ide/scala-ide-play2/issues/33
我也尝试过将Scala自然添加到项目中它什么都不做.
如何在Eclipse中编辑.scala.html文件?这是开发Play应用程序时的一项基本任务,所以如果没有修复,我正在寻找替代方案.
java.lang.ClassCastException: org.eclipse.jdt.internal.core.CompilationUnit cannot be cast to scala.tools.eclipse.InteractiveCompilationUnit
at scala.tools.eclipse.ScalaCompilationUnitEditor$class.getInteractiveCompilationUnit(ScalaCompilationUnitEditor.scala:84)
at scala.tools.eclipse.ScalaSourceFileEditor.getInteractiveCompilationUnit(ScalaSourceFileEditor.scala:68)
at scala.tools.eclipse.ScalaSourceFileEditor.createPartControl(ScalaSourceFileEditor.scala:297)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:129)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:95)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:300)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:859)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:839)
at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:111)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:319)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:240)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:161)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:102)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:71)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:53)
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:141)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:896)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:630)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:732)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:703) …Run Code Online (Sandbox Code Playgroud) 假设我有以下两个类:
case class User(id: Long, name: String)
case class Message(id: Long, body: String, to: User, from: User)
Run Code Online (Sandbox Code Playgroud)
在RowParserS可能会发生是这个样子:
val parser: RowParser[User] = {
get[Long]("users.id") ~ get[String]("users.name") map {
case id~name => User(id, name)
}
}
val parser: RowParser[Message] = {
get[Long]("messages.id") ~
get[String]("messages.name") ~
User.parser ~
User.parser map {
case id~body~to~from => Message(id, body, to, from)
}
}
Run Code Online (Sandbox Code Playgroud)
除了这是行不通的,因为加入时users表两次,ANORM只会解析第一联接的列(两次),这样to和from将是相同的.
这可以使用User解析器中的列别名来克服:
def parser(alias: String): RowParser[User] = {
getAliased[Long](alias + "_id") ~ …Run Code Online (Sandbox Code Playgroud) scala ×9
java ×2
sbt ×2
amazon-rds ×1
anorm ×1
collections ×1
eclipse ×1
editor ×1
ide ×1
mysql ×1
scala-2.11 ×1
scalac ×1
sorting ×1