gpt4 book ai didi

scala - 匹配是语言特征吗?

转载 作者:行者123 更新时间:2023-12-04 22:36:53 24 4
gpt4 key购买 nike

我正在自学 Scala,我有一个哲学问题。模式匹配是 Scala 的语言特性,还是只是一个库特性?换句话说,我是否足够熟练,可以编写 xmatch ,该函数除名称外在各方面都与 match 相同?实际上,我认为这是两个略有不同的问题:是否匹配库功能,它可以是库功能吗?

我正在考虑尝试重写 match,纯粹是作为一个练习,但我想要一些保证它是可能的。

最佳答案

模式匹配是一种语言特性,其中 match 语句只是最显着的例子。下面是另外两个常用的例子:

val List(x,y,(z: Int,w: Int)) = List("one","two",(3,4))
for ((text,i) <- List(("one",1),("two",2))) println(text + " = " + i)

所以,不,你不能自己做。该语言不允许您定义创建变量的新方法,因此这些事情只能在语言支持下才能发生。
match 语句本身使用语言内部的模式匹配变量创建支持,但原则上可以作为库功能实现。但是,在以下几种情况下效率会很低:
// This is implemented with fast jumps, not slow if-then-else!
n match {
case 0 => // Do action 0
case 1 => // Do action 1
case 2 => // Do action 2
case _ => // Do default action
}

// This is tail recursive, so you won't overflow the stack!
def recursiveMatch(xs: List[Any]): List[Any] = xs match {
case (x @ Int) :: rest => recursiveMatch(rest)
case _ => xs
}

所以,总而言之,不,你不能自己编写模式匹配,虽然你可以编写 match 语句,但使用现有的语句有优势。

关于scala - 匹配是语言特征吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4858648/

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