Obecnie próbuję rzeczy w Scala, próbując przyzwyczaić się do programowania funkcjonalnego, a także ponownie pochylać nowy język (od niedawna minęło trochę czasu).Scalanie listy ciągów przy użyciu mkString vs foldRight
Teraz lista łańcuchów, jeśli chcę połączyć je w jeden długi ciąg (np. "scala", "is", "fun" => "scalaisfun"
) wymyśliłem jeden sposób, aby to zrobić, to zrobić foldRight
i zastosować konkatenację na odpowiednich elementach. Innym sposobem, wprawdzie znacznie prostszym, jest wywołanie mkString
.
Sprawdziłem github, ale nie mogłem znaleźć kodu źródłowego dla odpowiednich funkcji (jakakolwiek pomoc na tym się liczy), więc nie jestem pewien, w jaki sposób funkcje są zaimplementowane. Z góry mojej głowy, myślę, że mkString
jest bardziej elastyczny, ale czuje, że może być gdzieś w implementacji foldRight
. Czy jest w tym jakaś prawda?
W przeciwnym razie skaladoki wspominają o mkString
wywołaniach mkString
dla każdego odpowiedniego elementu. Widząc, że są one już ciągami na początek, może to być jeden punkt ujemny dla tego konkretnego przypadku w przypadku mkString
. Wszelkie uwagi na temat zalet i wad obu metod w odniesieniu do wydajności, prostoty/elegancji itp.?
Oto źródło mkString, jeśli jesteś zainteresowany. https://www.assembla.com/code/scala-eclipse-toolchain/git/nodes/src/library/scala/collection/TraversableOnce.scala?rev=9752caefeb97123f195b32b4166577e59bf22bce#ln262 – sberry