我喜欢Scala提出的运算符优先级,但在极少数情况下,未经修改的规则可能不方便,因为在命名方法时有限制.有没有办法为Scala中的类/文件等定义另一个规则?如果没有,将来会解决吗?
这是我目前使用的代码
val bytes = new Array[Byte](20)
scala.util.Random.nextBytes(bytes)
sendAndReceive(bytes)
Run Code Online (Sandbox Code Playgroud)
有没有办法把它变成一个班轮?例如,如果它是一个Integer数组,我可以做
sendAndReceive(Array.fill(20){scala.util.Random.nextInt(9)}
Run Code Online (Sandbox Code Playgroud)
更换nextInt用nextBytes不起作用,因为的nextBytes需要一个Array[Byte]作为参数,而不是返回一个字节.
什么是惯用的打印方式(或做任何我需要做的事情)并在Scala中返回值?例如,
Seq(1,2,3)
.map(_ * 2)
.xxx(println) // Here I want to print the intermediate sequence
.foldLeft(0)(_ + _)
Run Code Online (Sandbox Code Playgroud)
我能想到的一种方法是使用隐式但我真的不喜欢自己修补标准库.
在Ruby中我们可以使用 Object#tap
[1,2,3]
.map { |i| i * 2 }
.tap { |i| puts i }
.reduce(0) { |x, i| x += i }
Run Code Online (Sandbox Code Playgroud)