【发布时间】:2018-07-16 00:21:30
【问题描述】:
我正在尝试创建一个函数,该函数将返回另一个函数,该函数将执行多个字符串操作(由给定选项确定):
选项有U(大写)、l(小写)T(标题大小写)s(排序)r(反向)和*(删除所有空格)。
现在,我拥有的代码将采用上述选项之一(因此,U 或 s 等)并返回正确的结果。我想要的是stringPipeline("Us*") 应该返回一个函数,它将字符串转换为大写,对其进行排序并删除所有空格。
我不知道如何修改我的函数以适应多个选项。
def stringPipeline(Option:String) = (str:String) => {
val UpperCase = () => str.toUpperCase
val LowerCase = () => str.toLowerCase
val titleCase = () => str.split(' ').map(_.capitalize).mkString(" ")
val reverse = () => str.reverse
val sortChars = () => str.sorted
val replaceChar = () => str.replaceAll("\\s","")
Option match {
case "U" => UpperCase()
case "l" => LowerCase()
case "T" => titleCase()
case "r" => reverse()
case "s" => sortChars()
case "*" => replaceChar()
}
}
我尝试使用 && 运算符(不起作用)、+ 运算符(调用这两个函数)并执行类似 reverse(UpperCase()) 的操作,但会导致编译器错误。
【问题讨论】:
标签: scala nested-function