小编Dav*_*haw的帖子

Scala:将字符串优雅转换为布尔值

在Java中你可以写Boolean.valueOf(myString).但是在Scala中,java.lang.Boolean隐藏了scala.Boolean缺少此功能的东西.切换到使用原始Java版本的布尔值很容易,但这似乎不对.

那么Scala中用于true从字符串中提取的单行,规范解决方案是什么?

scala

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

Scala:将Seq传递给var-args函数

给定一个带有可变数量参数的函数,例如

def foo(os: String*) =
  println(os.toList)
Run Code Online (Sandbox Code Playgroud)

如何将一系列参数传递给函数?我想写:

val args = Seq("hi", "there")
foo(args)
Run Code Online (Sandbox Code Playgroud)

显然,这不起作用.

scala

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

您在Haskell中找到了更高级别类型的用途?

较高等级的类型看起来很有趣.从Haskell wikibook到这个例子:

foo :: (forall a. a -> a) -> (Char,Bool)
foo f = (f 'c', f True)
Run Code Online (Sandbox Code Playgroud)

现在我们可以在foo id没有编译器爆炸的情况下进 这个例子在书中很快被我在其他几个地方看到的真实世界的例子:ST monad和runST.那很酷.

但是我还没有遇到过这样一种情况:我通过使用更高级别的参数编写自己的函数来解决问题.你呢?您在野外有什么样的rank-2或rank-n多态性?

polymorphism haskell types type-systems higher-rank-types

19
推荐指数
3
解决办法
1929
查看次数

scala中的并发map/foreach

我有一个迭代vals: Iterable[T]和一个长期运行的功能,没有任何相关的副作用:f: (T => Unit).现在这应用于vals显而易见的方式:

vals.foreach(f)
Run Code Online (Sandbox Code Playgroud)

我希望f同时完成调用(在合理的限制内).Scala基础库中某处有明显的功能吗?就像是:

Concurrent.foreach(8 /* Number of threads. */)(vals, f)
Run Code Online (Sandbox Code Playgroud)

虽然f运行时间相当长,但它足够短,我不希望为每个调用调用一个线程的开销,所以我正在寻找基于线程池的东西.

concurrency functional-programming scala

16
推荐指数
3
解决办法
9845
查看次数

以编程方式启动Scala REPL?

我想从命令行启动Scala Swing应用程序,然后在应用程序启动后,放入Scala REPL以用作控制接口.

理想情况下,我还想预先绑定一些变量名称.更好的是为REPL使用Java2D终端仿真器,但我找不到合适的东西.

Scala REPL是否有公共API?

scala read-eval-print-loop

10
推荐指数
1
解决办法
3740
查看次数

Scala中的多值映射

在Scala 2.8中,我有一个不可变的映射,每个键有多个值:

Map[T,Iterable[U]]
Run Code Online (Sandbox Code Playgroud)

有优越的代表性吗?其次,你将如何从中生成这样的地图

Iterable[(T,U)]
Run Code Online (Sandbox Code Playgroud)

?我目前正在使用:

def toGroupedMap[T,U](vals: Iterable[(T,U)]): Map[T,Iterable[U]] =
  vals.groupBy(_._1).map({ case (s,it) => (s,it.map(_._2)) }).toMap
Run Code Online (Sandbox Code Playgroud)

哪个有效,但感觉笨重.

编辑:我应该指定我正在使用不可变数据.是否存在与MultiMap不可变的等价物?

scala multimap scala-2.8

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