gpt4 book ai didi

scala - 为什么在 Scala 中匹配关键字而不是函数?

转载 作者:行者123 更新时间:2023-12-04 17:15:56 27 4
gpt4 key购买 nike

我不明白为什么 Scala 有 match定义为关键字而不是函数。它可以通过隐式定义(如 ArrowAssoc )。例如,请考虑以下情况。

  implicit class Matchy[A](a: A) {

def matchy[T](pf: PartialFunction[A, T]): T = pf(a)
}

val myVar = 10
val myString = myVar matchy {
case 5 => "five"
case 10 => "ten"
case x => x.toString
}

println(myString) // Prints "ten".

这将释放 match 作为变量名并提示 case 的事实。可以在匹配块之外使用。

那么为什么 Scala 定义了 match作为关键字?

最佳答案

  • 您不想创建 PartialFunction并且每次都有一个函数调用来进行这样的基本操作。
  • 尾调用 matchmatchy 中成为非尾调用.
  • 这正是 JIT 难以内联的那种巨态调用。 matchy可以明确地制作 @inline尽管。
  • 一般来说,你会失去很多优化机会。

  • 我失踪的原因可能更多......

    关于scala - 为什么在 Scala 中匹配关键字而不是函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46397785/

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