小编Jér*_*ôme的帖子

Scala双重定义(2种方法具有相同类型的擦除)

我在scala中写了这个,它不会编译:

class TestDoubleDef{
  def foo(p:List[String]) = {}
  def foo(p:List[Int]) = {}
}
Run Code Online (Sandbox Code Playgroud)

编译通知:

[error] double definition:
[error] method foo:(List[String])Unit and
[error] method foo:(List[Int])Unit at line 120
[error] have same type after erasure: (List)Unit
Run Code Online (Sandbox Code Playgroud)

我知道JVM没有对泛型的原生支持,所以我理解这个错误.

我可以写包装List[String],List[Int]但我很懒:)

我很怀疑,但是,有没有另一种方式表达List[String]不是同一种类型List[Int]

谢谢.

scala overloading compilation typeclass type-erasure

67
推荐指数
6
解决办法
1万
查看次数

在XML中将XML文本作为参数编写

我可以将变量作为多值参数传递:

scala> <b/>
res26: scala.xml.Elem = <b></b>

scala> Elem(null,"a",Null,TopScope,res26)
res27: scala.xml.Elem = <a><b></b></a>
Run Code Online (Sandbox Code Playgroud)

但我无法将XML文本作为多值参数传递:

scala> Elem(null,"a",Null,TopScope,<b/>)
<console>:12: error: not found: value <
Elem(null,"a",Null,TopScope,<b/>)
Run Code Online (Sandbox Code Playgroud)

但我可以将XML文本作为简单参数传递

scala> def bar(s:String,n:Elem) = s+n.toString
bar: (s: String, n: scala.xml.Elem)java.lang.String
scala> bar("super ", <a/>)
res30: java.lang.String = super <a></a>
Run Code Online (Sandbox Code Playgroud)

谢谢

xml scala

6
推荐指数
1
解决办法
258
查看次数

为什么scala使用相同的正则表达式,使用2种不同的匹配方法导致2种不同的结果?

为什么这里有匹配:

scala> """\bdog\b""".r
res65: scala.util.matching.Regex = \bdog\b
scala> res65.findFirstIn(" The dog plays in the yard")
res66: Option[String] = Some(dog)
Run Code Online (Sandbox Code Playgroud)

但不是这里:

scala> "The dog plays in the yard".matches("""\bdog\b""")
res67: Boolean = false
Run Code Online (Sandbox Code Playgroud)

regex scala

4
推荐指数
2
解决办法
132
查看次数

标签 统计

scala ×3

compilation ×1

overloading ×1

regex ×1

type-erasure ×1

typeclass ×1

xml ×1