目前,我做了类似以下的事情:
set term png
set output 'file.png'
Run Code Online (Sandbox Code Playgroud)
但是脚本中的硬编码文件是非常不灵活的.有没有办法告诉gnuplot输出图像文件到stdout,所以我可以在需要的地方重定向它的输出?
我有一个服务器,它将作为其职责的一部分提供一些Web内容.它使用嵌入式Jetty,我想为它添加一些Lift的美感(模板,演员等).
问题是所有电梯示例都使用Jetty作为容器.有没有办法在我的嵌入式Jetty中启动Lift?如果是,怎么样?
我需要从我的scaladoc链接到github上的源代码.我用sbt的doc任务构建那些文档.
有两个问题 - 首先,我不喜欢为我的.scala文件创建几个嵌套的空目录,所以我通常将它们全部打包在一起 - src/main/scala/org.rogach.scallop而不是src/main/scala/org/rogach/scallop.有没有办法让文档链接工作而不拆分该目录?
其次,当我把这行放在build.sbt中时:
scalacOptions in (Compile, doc) ++=
Opts.doc.sourceUrl("https://raw.github.com/Rogach/scallop/master/src/main/scala/")
Run Code Online (Sandbox Code Playgroud)
docs包含指向源的链接,但所有这些链接只指向源根URL,而不是文件本身.我究竟做错了什么?
有没有办法定义一个dsl,这将允许以下形式?
variable identifier identifier variable
Run Code Online (Sandbox Code Playgroud)
例如:
1 equals to 2
Run Code Online (Sandbox Code Playgroud)
我知道如何创建一个更简单的形式:1 equals to (2)但我想避免使用括号.有办法吗?
我有一个带有大量样板的程序(遗憾的是,即使是Scala机制也不能简化).但是如果有一种方法可以用宏生成复杂的顶级类,那么所有的样板都将消失.例如:
package org.smth
generate(params)
// becomes
class A { ... }
object B { ... }
case class C { ... }
Run Code Online (Sandbox Code Playgroud)
Scala 2.10宏可以实现吗?
在普通对象上,我可以执行以下操作:
object A {
def apply = "!"
}
A() // "!"
Run Code Online (Sandbox Code Playgroud)
但是在包对象上,这不起作用:
package object A {
def apply = "?"
}
A.apply // "?"
A() // compile error
// error: package A is not a value
Run Code Online (Sandbox Code Playgroud)
有一些基本的限制吗?或者它只是一个实现限制,我可以通过稍微调整编译器来解决这个问题?
在scala 2.9.x中,我tools.nsc.Global直接将某些字符串编译成一个类并执行它.
在scala 2.10中,可以用以下内容替换它:
import scala.reflect.runtime._;
val cm = universe.runtimeMirror(getClass.getClassLoader)
import scala.tools.reflect.ToolBox;
val tb = cm.mkToolBox()
tb.eval(tb.parse("class C; new C"))
Run Code Online (Sandbox Code Playgroud)
它完美无瑕.唯一的问题是,使用旧的(不推荐的)方法,我可以使用StoreReporter(带有错误消息,行号)获得所有编译失败的非常漂亮的摘要,并且新方法只会在编译错误时引发异常.
有什么方法可以实现这一点吗?
例如,我有以下表定义:
object Houses extends Table[Long]("Houses") {
def id = column[Long]("id")
def * = id
}
object Rooms extends Table[(Long, Long)]("Rooms") {
def id = column[Long]("id")
def houseId = column[Long]("houseId")
def size = column[Int]("size")
def * = id ~ houseId ~ size
}
Run Code Online (Sandbox Code Playgroud)
我想为每个房子选择最大的房间.
我想出了以下技巧:
val query = {
(r1, r2) <- Rooms leftJoin Rooms on ((r1,r2) =>
r1.houseId === r2.houseId && r1.size > r2.size
)
if r2.id.isNull
} yield r1
Run Code Online (Sandbox Code Playgroud)
它做我需要的,但是丑陋,完全不可读,似乎伤害了性能.我试图groupBy在查询上使用,但似乎我误解了一些核心概念 - 我无法得到正确的类型.
有没有更好的方法在Slick中进行这样的聚合查询?
我有很多数字.我需要对它们应用一些操作,然后只获取满足某些条件的结果.列表是顺序的,所以一旦我找到不满足条件的数字,我就可以停止查找.
我想避免做太多的计算,所以我在这个例子中继续前进:
List(1,2,3,4,5).view.map(2 *).takeWhile(_ < 8)
Run Code Online (Sandbox Code Playgroud)
但它给了我一个例外:
java.lang.UnsupportedOperationException: SeqViewM(...).newBuilder
at scala.collection.TraversableViewLike$class.newBuilder(TraversableViewLike.scala:69)
at scala.collection.SeqViewLike$$anon$3.newBuilder(SeqViewLike.scala:77)
at scala.collection.IterableLike$class.takeWhile(IterableLike.scala:139)
at scala.collection.SeqViewLike$$anon$3.takeWhile(SeqViewLike.scala:77)
at scala.collection.SeqViewLike$$anon$3.takeWhile(SeqViewLike.scala:77)
Run Code Online (Sandbox Code Playgroud)
使用Scala 2.9.0.1(与2.9.1相同的行为).这有什么不对?
scala ×8
scala-2.10 ×3
bash ×1
gnuplot ×1
jetty ×1
lift ×1
macros ×1
mongodb ×1
reflection ×1
sbt ×1
slick ×1
toolbox ×1
transactions ×1