代码之家  ›  专栏  ›  技术社区  ›  CodingNow

Scala:如何制作多种方法并逐一应用?

  •  1
  • CodingNow  · 技术社区  · 6 年前

    Scala:如何制作多种方法并逐一应用?

    我有一个清单: List("1", "2", "3")

    以及一种方法:

    def concat(str: String)(tail: String): String = str + tail
    

    我的目标是制作三种(想象的)方法:

    concat(str: String)("1")
    concat(str: String)("2")
    concat(str: String)("3")
    

    然后将这三种方法逐一应用于测试字符串“abc”: 然后我会得到结果: "abc123"

    执行此操作的功能方式是什么?如有任何提示,我们将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Leo C    6 年前

    你不需要三种不同的方法。仅使用 fold 遍历列表并应用 concat 方法依次为:

    val list = List("1", "2", "3")
    
    def concat(str: String)(tail: String): String = str + tail
    
    list.fold( "abc" )( concat(_)(_) )
    // res1: String = abc123
    

    请注意 fold( "abc" )( concat(_)(_) ) 只是以下内容的快捷方式:

    fold( "abc" )( (acc, x) => concat(acc)(x) )
    

    如果你不熟悉 折叠 ,这是 API doc