2017-04-14 16 views
0

私はScalaから始めていますが、今は高次関数について説明していますが、入力として関数を使用してプログラミングするこの方法には苦労しています。スカラ:文字列を連結する上位関数

私はそうのような文字列を連結しているスキャンおよび/またはを減らす、唯一の倍使用した高階関数をコーディングする必要があります。

concatenate(List("S", "T", "R", " example!") , f) 
//> res1: List[String] = List(STR example!, TR example!, R example!, " example!", "") 

誰もが、私はこの問題にアプローチすることができます方法を知っていますか?

答えて

5

使用scanのみ:

List("S", "T", "R", " example!").reverse.scan("")((x, y) => y + x).reverse 
// res72: List[String] = List(STR example!, TR example!, R example!, " example!", "") 

使用scanRight

List("S", "T", "R", " example!").scanRight("")(_+_) 
// res73: List[String] = List(STR example!, TR example!, R example!, " example!", "") 
+2

はどうもありがとうございました!これが何をしているのかを私に説明することはできますか? "(x、y)=> y + x"? –

+0

大歓迎です! – Psidom

+1

これはleft + rightの貼り付け順序を保証するために使用されます。リストが最初に逆になっていることに注意してください。 'x + y'を使用すると、' example!あなたが望むオーダーの代わりにRTSを使用してください。 – Psidom