在Scala 2.12.0中,当为函数文字赋值时,输出类似于var arrayString = [
[ "char" : "Z" ],
[ "char" : "Y" ],
[ "char" : "X" ],
[ "char" : "W" ],
[ "char" : "V" ],
[ "char" : "U" ],
[ "char" : "T" ],
[ "char" : "S" ]
]
let arrayIndex = [2, 3, 5]
arrayString = arrayString.enumerated()
.filter { !arrayIndex.contains($0.0 + 1) }
.map { $0.1 }
print(arrayString)
,而在2.11.8中,它将是<template>
<div id="a" :style="style" @mouseover="mouseOver()">
</div>
</template>
<script>
export default {
name: 'SquareButton',
props: ['color'],
computed: {
style () {
return 'background-color: ' + this.hovering ? this.color: 'red';
}
},
data () {
return {
hovering: false
}
},
methods: {
mouseOver () {
this.hovering = !this.hovering
}
}
}
</script>
<style scoped>
<style>
。为什么会有这样的变化? $$Lambda
是否表示lambda表达式?
2.12.0:
<functionX>
2.11.8:
$$Lambda
答案 0 :(得分:2)
在Java平台上,Scala 2.12编译器对Java 8+编译器使用的匿名函数使用相同的编码。因此,您看到的差异基本上是在第一种情况下,您从Scala toString()
实例中看到Function1[Int, Int]
方法的输出,而在第二种情况下,您看到{{ 1 8} Java 8 Lambda。
但请注意,这是Scala-JVM编译器的私有内部实现细节。你应该不依赖它。它可能是,并且在Scala.js和Scala-native上可能 不同。