gpt4 book ai didi

scala - 了解Scala符号语法

转载 作者:行者123 更新时间:2023-12-02 05:40:50 25 4
gpt4 key购买 nike

我有以下代码:

abstract class AList {
def head:Int
def tail:AList
def isEmpty:Boolean
def ::(n: Int): AList = SimpleList(n, Empty)
}

object Empty extends AList {

def head = throw new Exception("Undefined")

def tail = throw new Exception("Undefined")

def isEmpty = true

}

case class SimpleList(head: Int, tail: AList = Empty) extends AList {

def isEmpty = false

}

1 :: 2 :: Empty

我不知道最后一行实际上是如何工作的。从Int到SimpleList没有隐式转换。因此,我不理解方法调用机制。

Object.method(Arg)



我在这里看不到这种模式。我认为澄清scala符号(中缀,后缀,后缀等)会有所帮助。我想了解语法糖。

谢谢

最佳答案

::是正确操作数的方法。在scala中,如果方法名称以冒号结尾,则会在右侧的操作数上调用该方法。
因此1 :: 2 :: Empty实际上是Empty.::(2),它返回SimpleList

一旦您了解1 :: <the-new-simple-list>是正确操作数的方法,随后的::就会很容易理解。

关于scala - 了解Scala符号语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40270105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com