2014-10-20 2 views
0

Я видел [A] в playframework site. Я обнаружил, что [T] означает любого типа, [S] для подтип. Но я не мог найти то, что есть для [A]. Интересно, что он используется сразу после имени функции (logging).Что такое [A] в Scala?

import play.api.mvc._ 

def logging[A](action: Action[A])= Action.async(action.parser) { request => 
    Logger.info("Calling action") 
    action(request) 
} 

Итак, что же [A] означает в Scala?

+1

http://stackoverflow.com/questions/5354803/scala-type-parameter-bracket – MNie

+0

Как '' в Java. Если вы не знаете оба, прочитайте о «Дженериках». – Radian

+1

«[S] для подтипа» - где вы это слышали? –

ответ

2

Вы можете выбрать любое имя для общих типов в Scala. Итак, A - это просто имя для общего типа. Это может быть logging[T].

Для получения дополнительной информации вы можете обратиться к Scala generic Classes и Twitter Scala School.

Кстати, имейте в виду, что для создания функции (или метод) родовое вы должны поставить общий тип в скобках после имени функции:

def myFunc[T](someStuff: T): Boolean = .... 

или

def myFunc[T](someString: String): T = .... 
-1

Это просто культурная разница. Сообщество Java использует T, а сообщество Scala использует A по той же причине в той же ситуации.

+0

Ваша точка зрения действительно. Я имею в виду, прочитав стандартный код библиотеки Java и сравнив его со стандартным библиотечным кодом Scala, вы увидите, что 'T' находится повсюду в Java и' A' в Scala. Но я думаю, из этого нельзя сделать вывод, что это культурная разница. По крайней мере, в сообществе Scala (например, Play Play, Slick, Lift, ...) вы найдете разные имена для общих типов. Поэтому, наверное, упоминание о том, что это просто произвольное имя для общего типа, было бы лучшим ответом на этот вопрос. –

4

В A в скобках - это просто произвольное значение. Это может быть B, C, что вы хотите использовать на самом деле. Использование T специально не означает «тип», а S не означает «подтип» - это, как правило, соглашение, которое используется в некоторых библиотеках.

Довольно часто вы можете использовать букву, которая действует как памятная записка с точки зрения того, что такое определенный параметр типа, например, довольно распространено, что M может использоваться для таких вещей, как моноиды, монады и т. Д. ...

Смежные вопросы