是否有任何技术或体系结构原因试图在Scala中为方法名称使用特殊字符?

我是来自Java世界的Scala的新手。 Scala似乎比Java更复杂。此外,我注意到许多Scala构造使用模棱两可的方法名称。除了+,-,*和/很明显之外,是否有任何理由使用这样的方法:

object actorRef {
  implicit final class actorRefOps[-T](val ref: actorRef[T]) extends AnyVal {
    /**
     * Send a message to the actor referenced by this actorRef using *at-most-once*
     * messaging semantics.
     */
    def !(msg: T): Unit = ref.tell(msg) 
  }
}

当我看到感叹号发送邮件时,首先想到的是!

另一个例子:

  

List有一个名为`:::'的方法用于列表连接

     

使用方法如下:

val oneTwo = List(1,2)
val threeFour = List(3,4)
val oneTwoThreeFour = oneTwo ::: threeFour
  println(oneTwo + " and " + threeFour + " were not mutated.")
  println("Thus," + oneTwoThreeFour + " is a new list.")

是否有任何技术或体系结构上的原因试图使用特殊字符作为方法名称,或者仅仅是一种“炫耀”?

dizihenmang1 回答:是否有任何技术或体系结构原因试图在Scala中为方法名称使用特殊字符?

那是个好问题。

在Scala中,您认识和喜欢的所有运算符(+/*-)也都可以使用。

因此您可以重写该术语:

val hornsOfUnicorn = 2 - 1

val hornsOfUnicorns = 2.-(1)

Try it out!

从逻辑上讲,这是有道理的,实际上,由于历史原因,它是Java所缺少的功能。

当允许您使用完整的UTF-8-函数的字符范围(请参阅:自定义运算符)时,为什么不让它们变得不那么冗长,更简洁和更具表现力?

P.S:::::::的列表语法最初来自Haskell。

它用于以Haskell,Scala或PureScript之类的语言来表示列表的首尾性质。

实际上,它描述的不仅仅是“仅仅是一个运算符”。了解一下ScalaDoc of List

本文链接:https://www.f2er.com/3161257.html

大家都在问