我刚开始使用scala 3,在玩的时候我发现,有一个“^”运算符。
我只是不知道它是做什么的,它产生的输出也不能真正说明问题。
我试着在谷歌或文档中找到它,但除了一个提到我找不到任何东西。
https://docs.scala-lang.org/tour/operators.html
我也试着理解输出,也许你可以更好地理解它:
@main def foo() :Unit = {
var i = 0
while i < 10 do {
println(s"$i -> ${i^2}")
i += 1
}
}
输出:
0 -> 2
1 -> 3
2 -> 0
3 -> 1
4 -> 6
5 -> 7
6 -> 4
7 -> 5
8 -> 10
9 -> 11
在^之后使用i从0到5的不同数字的更多输出:
| 我|^2|^3|^4|^5|
| --------------|--------------|--------------|--------------|--------------|
| 0|二|三|四|五|
| 1|三|二|五|四|
| 二|0|1|六|七|
| 三|1|0|七|六|
| 四|六|七|0|1|
| 五|七|六|1|0|
1条答案
按热度按时间fcg9iug31#
在scala中,没有类似运算符的东西。你有对象,这些对象有方法。在scala的官方文档中,它谈到了operators
在Scala中,运算符是方法。任何带有单个参数的方法都可以用作中缀运算符。例如,+可以用点表示法调用:
方法可以用如下的任何名称命名(当然还有naming conventions)
当你正在做:
你所做的就是
这意味着,您正在调用名为
+
的对象的方法(对于*
,-
,/
相同)。回到你的问题,基于你的例子已知变量
i
的类型为Int
,您将从abstract final classInt extends AnyVal调用名为^的方法。正如你在方法的描述中所看到的:Returns the bitwise XOR of this value and x.
,这意味着您正在对象Int的示例和ˆ
方法中接收的参数之间进行位级XOR运算。这将被翻译为这就是为什么你得到这些输出。如果你使用的是IDE,它应该显示方法的scaladoc,甚至你可以浏览代码。
离题
您共享的代码片段可以以更实用的方式重写,而无需使用可以变异的变量