Scala 如何添加到自定义函数,如String=>;Int

Scala 如何添加到自定义函数,如String=>;Int,scala,Scala,不太清楚标题的措辞,但我正在尝试扩展一个定义为typeenvironment=String=>Int 我是从(案例类和模式匹配)中得到的 所以我有一个函数可以在这个环境中查找 type Environment = String => Int val env: Environment = { case "x" => 5 } def lookupEnv(env: Environment, x:String): Int = { env(x) } def extendEnv(

不太清楚标题的措辞,但我正在尝试扩展一个定义为type
environment=String=>Int
我是从(案例类和模式匹配)中得到的

所以我有一个函数可以在这个环境中查找

type Environment = String => Int

val env: Environment = { case "x" => 5 }

def lookupEnv(env: Environment, x:String): Int =
{
     env(x)
}

def extendEnv(env: Environment, x:String, v:Int)
{
    ????
}
任何帮助都将不胜感激。
谢谢

您可以这样做:

def extendEnv(env: Environment, x:String, v:Int): Environment = 
   (y: String) => if (y == x) v else env(y)
请参见本教程“匿名函数”下的此语法说明。注意

  • 这将“替换”已存在的
    env
    中的
    x
    值。当然,您仍然可以在
    env
    本身中访问它,它没有改变

  • 对于环境来说,这不是一个特别好的表示。例如,如果您添加了足够多的变量,就会出现堆栈溢出


  • 你说的“扩展”是什么意思?我不明白你在问什么。仅供参考:当你想退货时,不要忘记你的
    def
    上的
    =
    。如果省略它,编译器会假定该方法是一个
    单元
    。效果很好。谢谢