例如,有一个字符串val s = "Test".你怎么把它分成t, e, s, t?
我正在使用新的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,一个不带参数,另一个带上面隐含的.我是否必须在没有括号的情况下调用零参数方法?
我正在尝试创建一个具有键映射 - >函数调用的类,并且以下代码的行为与我希望的不同.
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方法调用中括号的规则是什么?
我是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)
那么,何时在运营商之后使用"()"?那有什么模式吗?
十分感谢!
我有一个以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)
我不明白这个。而不是预期的类型Html,views.html.showPropertiesScripts是views.html.showPropertiesScripts.type? 这是什么,为什么views.html.showPropertiesScripts不是类型Html(就像我的其他模板一样)?
我主要谈的是函数式编程语言.例如,维基百科的地图文章以Haskell-ish语言为例:
map square [1,2,3,4,5]
如何解析器/编译器知道我们想要的功能传递square到map作为一个高阶函数,而不是试图调用该函数本身?对于使用静态类型的语言,表达式square [1,2,3,4,5]显然不会编译,但编译器是否真的使用它来确定那不是我的意思?
或者,这只是维基百科的一个不好的例子,一个更好的例子可能看起来像map &square [1,2,3,4,5](使用C风格的函数引用)?
pointers functional-programming function map higher-order-functions
我有一个编译错误,我不明白。
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.
在下面的代码中,我尝试创建一个不带参数的函数值并打印一条消息
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)
为什么我的代码失败了?