相关疑难解决方法(0)

如何在Scala中将字符串拆分为字符

例如,有一个字符串val s = "Test".你怎么把它分成t, e, s, t

string split scala character character-encoding

49
推荐指数
4
解决办法
4万
查看次数

对Scala方法调用约定感到困惑,特别是Seq上的sum函数

我正在使用新的Scala IDE(Eclipse 3.6.2 + Scala IDE 2.0.0 [Scala 2.9.0]),我尝试做一些像这样简单的事情:

(1 to 10).sum
Run Code Online (Sandbox Code Playgroud)

这很好,但我最近也做了很多Groovy,我自动写道:

(1 to 10).sum()
Run Code Online (Sandbox Code Playgroud)

第二个版本在IDE中给出了编译器错误,并显示以下消息:

方法总和的参数不够:(隐式数:数字[B])B.未指定的值参数num.

我在Scala API上看到有两个版本的sum,一个不带参数,另一个带上面隐含的.我是否必须在没有括号的情况下调用零参数方法?

scala implicit parentheses

15
推荐指数
1
解决办法
2831
查看次数

是否可以在Scala中使用{key - > function call}的映射?

我正在尝试创建一个具有键映射 - >函数调用的类,并且以下代码的行为与我希望的不同.

class MyClass {
    val rnd = scala.util.Random

    def method1():Double = {
        rnd.nextDouble
    }

    def method2():Double = {
        rnd.nextDouble
    }

    def method3():Double = {
        rnd.nextDouble
    }

    def method4():Double = {
        rnd.nextDouble
    }

    def method5():Double = {
        rnd.nextDouble
    }

    var m = Map[String,Double]()    
    m += {"key1"-> method1}
    m += {"key2"-> method2}
    m += {"key3"-> method3}
    m += {"key4"-> method4}
    m += {"key5"-> method5}

    def computeValues(keyList:List[String]):Map[String,Double] = {
        var map = Map[String,Double]()
        keyList.foreach(factor => {
            val value = m(factor)
            map …
Run Code Online (Sandbox Code Playgroud)

scala function-pointers reference map

7
推荐指数
2
解决办法
3397
查看次数

何时需要(或禁止)方法的括号?

可能重复:
Scala方法调用中括号的规则是什么?

我是Scala的新手,我对postfix运算符上的()有一些困惑

我被告知toLong和toString是任何整数的后缀运算符,所以我尝试了以下操作:

scala> 7 toString
res18: java.lang.String = 7

scala> 7.toString()
res19: java.lang.String = 7

scala> 7.toString
res20: java.lang.String = 7

scala> 7.toLong
res21: Long = 7 

scala> 7.toLong()
<console>:8: error: Long does not take parameters
              7.toLong()
                      ^
Run Code Online (Sandbox Code Playgroud)

那么,何时在运营商之后使用"()"?那有什么模式吗?

十分感谢!

scala

6
推荐指数
2
解决办法
430
查看次数

Play 框架模板没有 Html 类型

我有一个以mainBody表单命名的模板:

@(title: String)(html: Html, moreScripts: Html = Html(""))
Run Code Online (Sandbox Code Playgroud)

我可以这样称呼

views.html.mainBody("All properties")(views.html.showProperties(list))
Run Code Online (Sandbox Code Playgroud)

views.html.showProperties()是另一个模板。我的印象是模板只是返回Html. 但是,如果我将其扩展为:

views.html.mainBody("All properties")(views.html.showProperties(list), views.html.showPropertiesScripts)
Run Code Online (Sandbox Code Playgroud)

哪里views.html.showPropertiesScripts只是带有一些 HTML 代码的模板,我收到错误消息:

play.PlayExceptions$CompilationException: Compilation error[type mismatch;
 found   : views.html.showPropertiesScripts.type
 required: play.twirl.api.Html]
        at play.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27) ~[na:na]
        at play.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27) ~[na:na]
        at scala.Option.map(Option.scala:145) ~[scala-library-2.11.2.jar:na]
        at play.PlayReloader$$anon$1$$anonfun$play$PlayReloader$$anon$$taskFailureHandler$1.apply(PlayReloader.scala:234) ~[na:na]
        at play.PlayReloader$$anon$1$$anonfun$play$PlayReloader$$anon$$taskFailureHandler$1.apply(PlayReloader.scala:229) ~[na:na]
Run Code Online (Sandbox Code Playgroud)

我不明白这个。而不是预期的类型Htmlviews.html.showPropertiesScriptsviews.html.showPropertiesScripts.type? 这是什么,为什么views.html.showPropertiesScripts不是类型Html(就像我的其他模板一样)?

scala playframework-2.0

5
推荐指数
1
解决办法
1058
查看次数

一些编程语言如何区分函数和函数指针?

我主要谈的是函数式编程语言.例如,维基百科的地图文章以Haskell-ish语言为例:

map square [1,2,3,4,5]

如何解析器/编译器知道我们想要的功能传递squaremap作为一个高阶函数,而不是试图调用该函数本身?对于使用静态类型的语言,表达式square [1,2,3,4,5]显然不会编译,但编译器是否真的使用它来确定那不是我的意思?

或者,这只是维基百科的一个不好的例子,一个更好的例子可能看起来像map &square [1,2,3,4,5](使用C风格的函数引用)?

pointers functional-programming function map higher-order-functions

3
推荐指数
1
解决办法
108
查看次数

Foo在Scala中不带参数编译错误?

我有一个编译错误,我不明白。

case class Point(x: Int, y: Int)

trait Rectangular {

  def topLeft: Point
  def bottomRight: Point

  def left = topLeft().x //Compile error occurring here
  def right = bottomRight.x
  def width = right - left

  // any many more concrete geometric methods.
 }
Run Code Online (Sandbox Code Playgroud)

我在定义第三种方法的行上收到编译错误,说“Point 不带参数”。

但是我认为您可以调用一个不带参数的函数,无论是否带有(). AstopLeft只是一个没有参数且返回类型为Point.

methods scala function traits

3
推荐指数
1
解决办法
5872
查看次数

为什么我在Scala中重新分配函数值失败?

在下面的代码中,我尝试创建一个不带参数的函数值并打印一条消息

trait Base {
  var onTrade = () => println("nothing")

  def run {
    onTrade
  }
}
Run Code Online (Sandbox Code Playgroud)

在下面的子类中,我尝试重新分配函数值以打印不同的消息

class BaseImpl extends Base {
  onTrade = () => {
    val price = 5
    println("trade price: " + price)
  }
  run
}
Run Code Online (Sandbox Code Playgroud)

当我运行BaseImpl时,根本没有打印到控制台.我期待着

trade price: 5
Run Code Online (Sandbox Code Playgroud)

为什么我的代码失败了?

scala

2
推荐指数
1
解决办法
214
查看次数