2017-02-17 13 views
0

Есть ли такая функция конкатенации в scala?Функция конкатенация в scala

Я помню в точке Haskell "." может выполнить две функции.

E.g. Я хочу, чтобы достичь

def f1(a:String) = a.toInt 

def f2(a:Int) = a + 1 

def f3 = f1 . f2 
f3("123") 
+0

FYI, вы должны написать его назад в Haskell: 'f2. f1'. –

+0

Scala имеет функцию композиции, но то, что у вас там есть, - это не функции, они методы. Сначала вам нужно преобразовать их в функции. –

+0

@ JörgWMittag Я не совсем понимаю. В чем разница между функциями и методами? Не могли бы вы привести мне пример? – worldterminator

ответ

5

В Scala, вы можете использовать andThen, чтобы сделать это, как:

val f3 = f1 _ andThen f2 _ 
f3("123") 

и Scala также имеет другой методcompose объединить function, compose любит andThen, но сначала он вызывает вторую функцию и вызывает первую функцию, например (f1 (f2 (_))).

Ссылка:

http://www.scala-lang.org/api/rc2/scala/Function1.html

+1

Ни одно из ключевых слов, это просто имена методов. –

+0

@AlexeyRomanov, Спасибо, я обновлю это и добавлю ссылку 'Function1.scala'. – chengpohi