2014-04-17 39 views
0

不太确定标题的措辞,但我想要做的是扩展定义为Environment = String => Int 的环境我已经从Scala tutorial for java programmers.(案例分类和模式匹配)如何添加到自定义函数,如字符串=> 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) 
{ 
    ???? 
} 

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

+0

“扩展”是什么意思?我不明白你在问什么。 – wheaties

+0

供参考:当你的意思是返回一些东西时,别忘记你的'def'上的'='。如果省略它,则编译器假定该方法是“单元”。 – Dylan

回答

1

你可以做这样的:

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

看到这个语法下的教程“匿名函数”的描述。需要注意的是

  1. 这将在env“替换”一值x如果已经有了另外一个。当然,您仍然可以在env本身中访问它,它并没有改变。

  2. 这不是特别的表示环境。例如。如果你添加了足够的变量,你会得到堆栈溢出。

+0

工作很好。谢谢! – user2433237

相关问题