Что это значит, когда => находится внутри []? - PullRequest
2 голосов
/ 29 июня 2019

Недавно я видел книгу под названием «Scala: прикладное машинное обучение». Я нашел это:

type U = List[Fields => Double]

Я не видел => внутри [] во многих книгах. Пожалуйста, объясни мне это.

Ответы [ 2 ]

2 голосов
/ 29 июня 2019

Вот компоненты type U = List[Fields => Double]:

  • Fields => Double это тип функции
  • List является конструктором типов для типа коллекции
  • type U - псевдоним типа

Например, скажем, у нас есть следующие функции

val foo: Int => String = (x: Int) => "hello " + x
val bar: Int => String = (x: Int) => "goodbye " + x
val zar: Int => String = (x: Int) => "greetings " + x

Тогда мы могли бы собрать их в List из Int => String функций, например,

List[Int => String](foo, bar, zar)

таким же образом мы можем собрать целые числа в список

List[Int](1,3,42)

В Scala мы говорим, что функции являются значениями первого класса , что означает, что мы можем использовать их так же, как и любое другое значение, то есть передавать их в и из других функций, добавлять их в коллекции, назначать их переменные и т. д.

type U - псевдоним типа, означающий, что он дает другое имя типу с правой стороны. Мы можем использовать его, например, для упрощения длинного имени типа, поэтому вместо записи List[Int => String] мы можем просто написать U:

def qux(c: U): U = c

будет таким же, как

def qux(c: List[Int => String]): List[Int => String] = c

List[T] - это конструктор типа, означающий, что когда мы подставляем конкретный тип для T, например Int, или String, или Int => String, мы получаем соответствующие типы List[Int], List[String], и List[Int => String].

0 голосов
/ 29 июня 2019

Это List функций, которые принимают аргумент типа Fields и возвращают Double.

В Java 8 это будет семантически эквивалентно List<Function<Fields, Double>>.(Не уверен, что Scala переводит его на то, что находится под капотом).

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