я нашел следующий синтаксис в Скале, которые я не понимаюЧто A => А = а => среднее в Скале
object Category {
def id[A]: A => A = a => a
}
Особенно эта часть А = а => а
Кто она может быть переведена в более читаемый синтаксис
я нашел следующий синтаксис в Скале, которые я не понимаюЧто A => А = а => среднее в Скале
object Category {
def id[A]: A => A = a => a
}
Особенно эта часть А = а => а
Кто она может быть переведена в более читаемый синтаксис
Это метод, который возвращает функцию, которая принимает A
и возвращает другой A
и функция она возвращается является identity
(вы получите переменную a
типа A
и просто вернуть его):
scala> object Category {
| def id[A]: A => A = a => a
| }
defined module Category
scala> Category.id[Int]
res0: Int => Int = <function1>
scala> res0(0)
res2: Int = 0
Не уверен, что вы пытаетесь достичь здесь, чтобы быть честным.
Эта линия:
def id[A]: A => A = a => a
определяет метод с именем id
, который имеет аргумент типа A
.
Возвращаемый тип метода: A => A
, который является: функцией, которая принимает A
и возвращает A
.
Часть после =
: a => a
- это тело метода id
. Это функция литерала для функции, которая принимает значение a
и возвращает то же самое a
.
Часть, о которой вы конкретно спрашиваете: A = a => a
не является частью отдельно. A => A
является обратным типом метода id
, а a => a
является телом метода. Как и любой другой метод, =
между этими двумя частями отделяет объявление метода от тела метода.
Вы могли бы написать то же самое, как это:
def id[A]: Function1[A, A] = a => a
Я изучаю теорему категории и нашел этот пример кода, и я просто хотел понять этот синтаксис. – Jay