小编pmk*_*eld的帖子

scala中奇怪的类型推断

我对Scala类型推断有些麻烦.在下面的工作表示例中,我定义了一个Map,它将Any值映射到返回Unit值的函数.

有趣的是,当我尝试使用一行代码定义相同的地图时,它不起作用,因为'bar'函数返回类型突然变为Any而不是Unit.

type UnitFun = (Any) => Unit

val foo = "foo"
val bar = (a: Any) => System.out.println("bar")

val map: Map[Any, UnitFun] = Map().withDefaultValue(((a: Any) => Unit))
val doesCompile: Map[Any, UnitFun] = map + (foo -> bar)

val doesNotCompile: Map[Any, UnitFun] = Map().withDefaultValue(((a: Any) => Unit)) + (foo -> bar)
Run Code Online (Sandbox Code Playgroud)

我使用IDEA14作为IDE与Scala 2.11.6

在我看来,这是Scala编译器的功能/ Bug,还是我错过了什么?

顺便说一句我刚注意到当我在'doesNotCompile'中使用'bar'作为默认值时,就像这样:

val doesCompileNow: Map[Any, UnitFun] = Map().withDefaultValue(bar) + (foo -> bar)
Run Code Online (Sandbox Code Playgroud)

它突然似乎有效,我现在非常困惑.:d

编辑1:@Mikolak

在这种情况下,以下代码如何工作?:)

val a: Any => Unit = (a: Any) => Unit
val …
Run Code Online (Sandbox Code Playgroud)

dictionary scala type-inference

3
推荐指数
1
解决办法
127
查看次数

在没有javascript的情况下对HTML select-tag中的选项进行排序

我想知道是否可以使用HTML和CSS对html选择标记中的选项进行排序.

所以给出以下片段:

<select>
    <option>c</option>
    <option>b</option>
    <option>a</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我希望浏览器按以下顺序显示这些项目:

a
b
c
Run Code Online (Sandbox Code Playgroud)

使用javascript,或者更糟糕的是希望这些元素预先排序只是感觉错了:)

谢谢

html css

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

为什么在Scala中追加List返回其他List类型?

由于搜索:+不会产生任何结果(谢谢谷歌!)我找不到任何问题的答案:

为什么是:

a :+ b
Run Code Online (Sandbox Code Playgroud)

导致

List[Any]
Run Code Online (Sandbox Code Playgroud)

如果'a'和'b'都是类型的

List[Int]
Run Code Online (Sandbox Code Playgroud)

自己尝试一下,下面不会编译(Scala 2.11.6,Idea14)​​:

object AAA extends App {
  val a: List[Int] = List[Int]()
  val b: List[Int] = List[Int]()

  val x: List[Int] = a :+ b
}
Run Code Online (Sandbox Code Playgroud)

thx提前

collections types scala list

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

标签 统计

scala ×2

collections ×1

css ×1

dictionary ×1

html ×1

list ×1

type-inference ×1

types ×1