首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scala中的高阶函数

scala中的高阶函数
EN

Stack Overflow用户
提问于 2020-10-18 13:49:24
回答 1查看 63关注 0票数 0

我有这两个函数:

代码语言:javascript
复制
 def replaceValue(value: String): String =
    if (value.startsWith(":")) value.replaceFirst(":", "/") else value

  def getData(value: String): String = {
    val res = replaceValue(value).replace("-", ":")
    val res1    = res.lastIndexOf(":")
    if (res1 != -1) res.substring(0,3)
    else res.concat("-")
  }

我想把它们转换成高阶函数。

到目前为止,我已经尝试过了。它的高阶函数是什么?

代码语言:javascript
复制
  def getData = (value: String) => {
    val res = replaceValue(value).replace("-", ":")
    val res1    = res.lastIndexOf(":")
    if (res1 != -1) res.substring(0,3)
    else res.concat("-")
  }
EN

回答 1

Stack Overflow用户

发布于 2020-10-18 14:52:29

您可以执行以下操作:

代码语言:javascript
复制
def getDataImpl(f: String => String)(value: String): String = {
    f(value)
}

def getDataSubstring: String => String = getDataImpl(_.substring(0,3))
def getDataConcat: String => String = getDataImpl(_.concat("-"))

def getData(value: String): String = {
    val replaced = replaceValue(value).replace("-", ":")
    if (replaced.contains(":")) {
        getDataConcat(replaced)
    } else {
        getDataSubstring(replaced)
    }
}

代码运行可以在Scastie上找到。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64410139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档