Scala: Как сделать несколько методов и применить их один за другим? - PullRequest
0 голосов
/ 27 апреля 2018

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 Ответ

0 голосов
/ 27 апреля 2018

Вам не нужно 3 разных метода. Просто используйте 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) )

Если вы не знакомы с fold, вот документация API

...