scala – 在地图中进行懒惰评估

我正在尝试根据输入创建一个执行其他函数(返回字符串)的函数.
例如:

def execute(input: String) = {
    val actions = Map("foo" -> someObject.doStuff(),"bar" -> someObject.doThing())
    actions.get(input) }

有没有办法只在相应的密钥存在时才能调用Map中的函数

解决方法

object someObject {
  def doStuff() = "foo"
  def doThing() = "bar"

}

//if you need a string as a return value.
//there will be empty string for missing keys
def execute(input: String):String = {
  val actions = Map( "foo" -> someObject.doStuff _,"bar" -> someObject.doThing _ )

  actions.getorElse(input,()=>"")()
}


//if you need an Option[String] as a return value.
//there will be None value for missing keys
def executeOption(input: String):Option[String] = {
  val actions = Map( "foo" -> someObject.doStuff _,"bar" -> someObject.doThing _ )

  actions.get(input).map(_())
}

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...