gpt4 book ai didi

scala - Scala 中函数组合的简洁语法?

转载 作者:行者123 更新时间:2023-12-04 12:47:46 25 4
gpt4 key购买 nike

我正在学习 Scala 并遇到以下任务 - 如果字符串为空,则返回 null,否则将其大写。

Apache Commons 中有两个函数组合在一起解决了这个问题。在 Haskell 中,我只想写:

upperCaseOrNull = StringUtils.stripToNull . StringUtils.upperCase

但是,我找不到在 Scala 中进行简单而干净的函数组合的方法。我发现的最短方法如下:
def upperCaseOrNull (string:String) = StringUtils.stripToNull (StringUtils.upperCase(string))
def upperCaseOrNull = StringUtils.stripToNull _ compose StringUtils.upperCase _

Scala 是否提供更简洁的语法,可能没有所有这些下划线?

最佳答案

Haskell 在它真正关心的一些事情上是极端紧凑的大师。所以几乎不可能被击败。如果你正在做太多的函数组合,以至于开销真的妨碍了你(就我个人而言,重复 StringUtils. 会让我更加烦恼!),你可以做类似的事情

implicit class JoinFunctionsCompactly[B,C](g: B => C) {
def o[A](f: A => B) = g compose f
}

所以现在你只有四个额外的字符( _ 两次)超过 Haskell。

关于scala - Scala 中函数组合的简洁语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com