在Lift Web Framework中,简单构建工具(SBT)的依赖项在LiftProject.scala中指定.该文件包含以下代码:
override def libraryDependencies = Set(
"net.liftweb" %% "lift-webkit" % liftVersion % "compile->default",
"net.liftweb" %% "lift-mapper" % liftVersion % "compile->default",
"org.mortbay.jetty" % "jetty" % "6.1.22" % "test->default",
"junit" % "junit" % "4.5" % "test->default",
"org.scala-tools.testing" %% "specs" % "1.6.6" % "test->default",
"org.scala-lang" % "scala-compiler" % "2.8.1" % "test->default",
"org.apache.tomcat" % "tomcat-juli" % "7.0.0" % "test->default",
"com.h2database" % "h2" % "1.2.138"
) ++ super.libraryDependencies
Run Code Online (Sandbox Code Playgroud)
%和%%运算符在这里做什么?如果我将此代码粘贴到scala解释器中,则会出错,并且没有为String或RichString定义%或%%.这里发生了什么?
我已经定义了多个构造函数,在所有构造函数中都有一些默认参数值.看起来正确(我看不出任何歧义),但Scala(2.8)编译器抱怨:
多个重载的构造函数替代定义默认参数
这是否意味着我根本无法为重载的构造函数定义默认值?
让我来说明一下情况(当然是原始的,但是说明性的):
class A(subject : Double, factor : Int = 1, doItRight : Boolean = true) {
def this (subject : Int, factor : Int = 1, doItRight : Boolean = true) = {
this(subject.toDouble , factor, doItRight)
}
def this (subject : String, factor : Int = 1, doItRight : Boolean = true) = {
this(subject.toDouble , factor, doItRight)
}
def this () = {
this(defaultSubject)
}
}
_2在以下代码中的含义是什么?我在哪里可以找到这方面的官方文档?
..
@if(errors) {
<p class="error">
@errors.head._2
</p>
}
...
Run Code Online (Sandbox Code Playgroud) 我正在使用Scala编译服务器.这可能与我的IDE IntelliJ IDEA无关,但我只是通知您,我通过该IDE中的特殊运行配置启动Scala编译服务器.
经过一段时间没有编译任何东西,编译服务器终止,没有任何消息.通常,当我尝试编译某些内容并且编译失败时,我只会注意到这一点.然后,我需要再次启动编译服务器,当然下一次编译需要很长时间,因为它是自启动编译服务器以来的第一次编译.
如何关闭超时?我查看了scalac的联机帮助页,似乎没有选项.我可以为该运行配置添加VM选项.
不通过索引处理集合的优点之一是避免逐个错误.这肯定不是唯一的优势,但它是其中之一.
现在,我经常用sliding在斯卡拉一些算法,但我觉得它通常会导致非常相似的off-by-一个错误的东西,因为一个sliding的m大小的集合中的元素n有大小n - m + 1的元素.或者,更简单的list sliding 2是,一个元素短于list.
我得到的感觉是,在这种模式中存在缺失的抽象,这将是一部分sliding,一部分更多 - 就像foldLeft是reduceLeft.但是,我想不出那可能是什么.任何人都可以帮我找到启示吗?
UPDATE
由于人们不清楚我在说什么,让我们考虑一下这个案例.我想大写一个字符串.基本上,每个没有字母的字母都应该是大写字母,所有其他字母应该是小写字母.使用sliding,我必须特殊情况下的第一个或最后一个字母.例如:
def capitalize(s: String) = s(0).toUpper +: s.toSeq.sliding(2).map {
case Seq(c1, c2) if c2.isLetter => if (c1.isLetter) c2.toLower else c2.toUpper
case Seq(_, x) => x
}.mkString
Run Code Online (Sandbox Code Playgroud) 我有一个Scala函数foo(bs : Stream[Bar]) : Bat,我需要从Java代码调用.如何Stream[Bar]在Java中创建"bs"Stream()并懒惰地生成其Bar对象?
有没有办法在IntelliJ上删除周围的括号,括号,引号等?例如,如果我有:
"string"
Run Code Online (Sandbox Code Playgroud)
有没有办法删除匹配的引号并得到这个?
string
Run Code Online (Sandbox Code Playgroud) 如何在Scala 2.10的反射中反映包层次结构?我可以找出存在哪些子包,或者父包是什么?
当反射仍然开始时,在Scala 2.10.0里程碑的时代,我问了一个问题,我怎么能用它来查看REPL的代码片段树.优秀的答案比我的要求更进一步,并展示了它们如何用于解析和评估树木,所以我继续尝试将它用于我今天进行的一个小项目.
不幸的是,以这种方式解析和评估的代码似乎没有看到任何REPL定义:
scala> val x = 1
x: Int = 1
scala> import scala.tools.reflect.ToolBox
import scala.tools.reflect.ToolBox
scala> val tb = scala.reflect.runtime.universe.runtimeMirror(
getClass.getClassLoader).mkToolBox()
tb: scala.tools.reflect.ToolBox[reflect.runtime.universe.type] = ...
scala> tb.eval(tb.parse("x"))
scala.tools.reflect.ToolBoxError: reflective compilation has failed:
not found: value x
Run Code Online (Sandbox Code Playgroud)
有没有办法让它识别REPL上的定义?
在Scala中对象是单身......所以如果我做:
trait SimpleTrait {
def setString(s: String): Unit = {
InnerTraitObject setString s
}
def getString(): String = {
return InnerTraitObject getString
}
object InnerTraitObject {
var str: String = ""
def setString(s: String): Unit = {
str = s
}
def getString(): String = {
return str
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后
class SimpleClass extends SimpleTrait{
/// empty impl
}
Run Code Online (Sandbox Code Playgroud)
和:
object App {
def main(args: Array[String]): Unit = {
val a = new SimpleClass();
val b = new SimpleClass(); …Run Code Online (Sandbox Code Playgroud) scala ×9
reflection ×2
scala-2.10 ×2
collections ×1
constructor ×1
default ×1
fsc ×1
java ×1
lift ×1
overloading ×1
sbt ×1
scalac ×1
scope ×1
singleton ×1