如何添加自定义函数,如String =>诠释

时间:2014-04-17 12:06:13

标签: scala

对标题的措辞不太确定,但我要做的是扩展定义为类型Environment = String => Int的环境 我从Scala tutorial for java programmers.(案例类和模式匹配)

得到了这个

所以我有一个可以在这个环境中查找的功能。

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)
{
    ????
}

任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:1)

你可以这样做:

def extendEnv(env: Environment, x:String, v:Int): Environment = 
   (y: String) => if (y == x) v else env(y)

请参阅本教程“匿名函数”下的此语法说明。注意

  1. 如果已有x,则会env中的env值。当然,你仍然可以在{{1}}本身访问它,它没有改变。

  2. 这不是环境的特别良好表示。例如。如果添加足够的变量,就会出现堆栈溢出。