Tag: 斯卡拉

在Scala中定义函数的两种方法。 有什么不同?

这是一个小小的Scala会话,定义并尝试一些function: scala> def test1(str: String) = str + str; test1: (str: String)java.lang.String scala> test1("ab") res0: java.lang.String = abab 很好地工作。 scala> val test2 = test1 <console>:6: error: missing arguments for method test1 in object $iw; follow this method with `_' if you want to treat it as a partially applied function val test2 = test1 ^ […]

为什么没有我在斯卡拉++?

我只是想知道为什么没有i++来增加一个数字。 据我所知,像Ruby或Python这样的语言不支持它,因为它们是dynamictypes的。 所以显然我们不能像i++那样编写代码,因为也许i是一个string或其他东西。 但是Scala是静态types的 – 编译器绝对可以推断出如果是合法的,或者不把++放在variables后面。 那么,为什么i++不在斯卡拉存在?

如何混合一个特质到实例?

鉴于MyTrait的特点: trait MyTrait { def doSomething = println("boo") } 它可以被混合成一个类, extends或with : class MyClass extends MyTrait 它也可以在实例化一个新实例时混合使用: var o = new MyOtherClass with MyTrait o.doSomething 但是…可以将特质(或任何其他如果有所不同)添加到现有的实例吗? 我正在Java中使用JPA加载对象,我想用特征添加一些function给他们。 有没有可能? 我想能够混合在一个特质如下: var o = DBHelper.loadMyEntityFromDB(primaryKey); o = o with MyTrait //adding trait here, rather than during construction o.doSomething

在Scala元组上使用函数组合器?

“地图”保留了元素的数量,所以在Tuple上使用它似乎是明智的。 我到目前为止的尝试: scala> (3,4).map(_*2) error: value map is not a member of (Int, Int) (3,4).map(_*2) ^ scala> (3,4).productIterator.map(_*2) error: value * is not a member of Any (3,4).productIterator.map(_*2) ^ scala> (3,4).productIterator.map(_.asInstanceOf[Int]*2) res4: Iterator[Int] = non-empty iterator scala> (3,4).productIterator.map(_.asInstanceOf[Int]*2).toList res5: List[Int] = List(6, 8) 它看起来很痛苦…我甚至还没有开始尝试将它转换回元组。 我做错了吗? 图书馆可以改进吗?

Scala风格的元素?

我一天写C#。 我所做的每件事都通过微软的代码分析和静态分析工具,所以我的C#有一个非常规则的结构和布局。 很明显,我用某种风格编写代码。 这是部分的,因为我没有select(如果我错过了逗号之前的空格,它将不会被编译),但是定期查看代码,知道在哪里寻找东西等也是很好的。 在周末我正在进入斯卡拉。 看看Scala API和Lift web框架的源代码,我很难看到任何标准化的风格。 例如,跳到我身上的一件事就是每个类缺less一个单独的文件。 另一个例子是与括号和括号不一致。 据我所知,可能有几个原因促成了这一点:首先,开源(或爱好)代码确保一个明显的方法没有完全logging是不是优先事项。 其次,案例类将20行的类声明切成一行。 第三,C#是一个非常“平淡”的语言:除非是一个复杂的LINQ语句,嵌套的parens,括号和括号的数量并不那么深。 在斯卡拉,事情往往会有一点嵌套。 常规的Scala用户有他们坚持的特定风格吗? 为了外国人的惯例,我只是把自己的文件放在一个单行的案例中去做傻事? 有小费吗?

Scala:在函数参数中分解元组

在Python中,我可以这样做: def f((a, b)): return a + b d = (1, 2) f(d) 这里传入的元组在被传递给f被分解。 现在在斯卡拉我现在正在这样做: def f(ab:(Int, Int)) : Int = { val (a, b) = ab a + b } val d = (1, 2) f(d) 有什么我可以在这里做的,以便分解发生在parameter passing? 只是好奇。 谢谢。

Akka如何在Play中使用?

Play的主页说: Play基于Akka构build,为高度可扩展的应用程序提供可预测且最小的资源消耗(CPU,内存,线程)。 我想知道在Play中使用Akka的方式和位置,以及在Akka之上构buildPlay的后果是什么。

斯卡拉给我“非法开始定义”

我正在尝试开始使用Scala,无法离开起点。 由该行组成的文件 package x 给我 错误:非法开始定义 不pipex是什么,也不pipe我把文件放在哪里(我有一个理论,我必须将文件放在目录层次结构中以匹配包定义,但是不包含)。 我从网站和REPL中得到与示例代码相同的错误。

如何将Java Iterable转换为Scala Iterable?

有没有一种简单的方法来转换一个 java.lang.Iterable[_] 到一个 Scala.Iterable[_] ?

在斯卡拉,“观点”是做什么的?

具体来说,我在这里看问题1 Scala for Project Euler 所列出的代码如下 val r = (1 until 1000).view.filter(n => n % 3 == 0 || n % 5 == 0).sum 除了“查看”,我可以关注所有内容。 事实上,如果我拿出来的代码仍然编译和产生完全相同的答案。