小编Dan*_*ral的帖子

%和%%运算符在设置SBT依赖项时会做什么?

在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 lift sbt

15
推荐指数
2
解决办法
762
查看次数

如果我在Scala中定义多个重载的构造函数,我不能定义默认值吗?

我已经定义了多个构造函数,在所有构造函数中都有一些默认参数值.看起来正确(我看不出任何歧义),但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)
  }

}



constructor default scala overloading

14
推荐指数
1
解决办法
3144
查看次数

_2的含义在scala语言中签名

_2在以下代码中的含义是什么?我在哪里可以找到这方面的官方文档?

.. 
@if(errors) {
    <p class="error">
        @errors.head._2
    </p>
}
...
Run Code Online (Sandbox Code Playgroud)

scala

14
推荐指数
2
解决办法
6106
查看次数

如何关闭Scala快速编译服务器(FSC)超时?

我正在使用Scala编译服务器.这可能与我的IDE IntelliJ IDEA无关,但我只是通知您,我通过该IDE中的特殊运行配置启动Scala编译服务器.

经过一段时间没有编译任何东西,编译服务器终止,没有任何消息.通常,当我尝试编译某些内容并且编译失败时,我只会注意到这一点.然后,我需要再次启动编译服务器,当然下一次编译需要很长时间,因为它是自启动编译服务器以来的第一次编译.

如何关闭超时?我查看了scalac的联机帮助页,似乎没有选项.我可以为该运行配置添加VM选项.

scala intellij-idea scalac fsc

13
推荐指数
2
解决办法
1624
查看次数

一个人滑动?

不通过索引处理集合的优点之一是避免逐个错误.这肯定不是唯一的优势,但它是其中之一.

现在,我经常用sliding在斯卡拉一些算法,但我觉得它通常会导致非常相似的off-by-一个错误的东西,因为一个slidingm大小的集合中的元素n有大小n - m + 1的元素.或者,更简单的list sliding 2是,一个元素短于list.

我得到的感觉是,在这种模式中存在缺失的抽象,这将是一部分sliding,一部分更多 - 就像foldLeftreduceLeft.但是,我想不出那可能是什么.任何人都可以帮我找到启示吗?

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)

collections functional-programming scala

13
推荐指数
2
解决办法
2079
查看次数

如何在Java中实例化和填充Scala流?

我有一个Scala函数foo(bs : Stream[Bar]) : Bat,我需要从Java代码调用.如何Stream[Bar]在Java中创建"bs"Stream()并懒惰地生成其Bar对象?

java scala

13
推荐指数
2
解决办法
1571
查看次数

在IntelliJ上删除周围的引号/括号/括号/等

有没有办法在IntelliJ上删除周围的括号,括号,引号等?例如,如果我有:

"string"
Run Code Online (Sandbox Code Playgroud)

有没有办法删除匹配的引号并得到这个?

string
Run Code Online (Sandbox Code Playgroud)

intellij-idea

13
推荐指数
2
解决办法
2757
查看次数

Scala 2.10和包反射

如何在Scala 2.10的反射中反映包层次结构?我可以找出存在哪些子包,或者父包是什么?

reflection scala scala-2.10

12
推荐指数
1
解决办法
523
查看次数

如何让Scala ToolBox查看REPL定义?

当反射仍然开始时,在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上的定义?

reflection scala scala-2.10

12
推荐指数
1
解决办法
1363
查看次数

Trait中的Scala对象

在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)

singleton scope scala

11
推荐指数
1
解决办法
3140
查看次数