相关疑难解决方法(0)

什么`:_*`(冒号下划线星)在Scala中做什么?

我从这个问题得到以下代码:

def addChild(n: Node, newChild: Node) = n match {
  case Elem(prefix, label, attribs, scope, child @ _*) => Elem(prefix, label, attribs, scope, child ++ newChild : _*)
  case _ => error("Can only add children to elements!")
}
Run Code Online (Sandbox Code Playgroud)

除此之外,其中的所有内容都非常清晰: child ++ newChild : _*

它有什么作用?

我明白有Seq[Node]与另一个连接Node,然后呢?怎么: _*办?

scala pattern-matching

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

使用Scala的varargs

我正试图弄清楚如何做以下事情:

def foo(msf: String, o: Any, os: Any*) = {
    println( String.format(msf, o :: List(os:_*)) )
}
Run Code Online (Sandbox Code Playgroud)

有一个原因,我必须单独声明方法o和一个os Seq.基本上,我最终得到了使用单个对象参数(类型List)调用的格式方法.尝试:

def foo(msf: String, o: Any, os: Any*) = {
    println( String.format(msf, (o :: List(os:_*))).toArray )
}
Run Code Online (Sandbox Code Playgroud)

给我类型错误:

发现:数组[任意]

必需的Seq [java.lang.Object]

我尝试过编译,编译但失败的原因和第一个例子差不多.当我尝试

println(String.format(msg, (o :: List(os:_*)) :_* ))
Run Code Online (Sandbox Code Playgroud)

这无法使用隐式转换歧义进行编译(any2ArrowAssocany2stringadd)

scala variadic-functions

54
推荐指数
2
解决办法
5万
查看次数

Scala Map实现按插入顺序保留条目?

在Java中,我LinkedHashMap用于此目的.Java的文档LinkedHashMap很清楚,它具有"可预测的迭代顺序",我在Scala中需要相同的东西.

Scala有ListMapLinkedHashMap,但他们这样做究竟是什么文件很糟糕.

问题:Scala LinkedHashMapListMap实现是否用于此目的?如果没有,除了LinkedHashMap直接使用Java之外还有哪些其他选项?

scala scala-2.8 scala-collections ordered-map

39
推荐指数
3
解决办法
2万
查看次数