Я новичок и наивна к scala. Просто знайте, как определить тип функции, например Set здесь (только в качестве примера).
type Set = Int => Boolean
def set(i: Int): Set = n => n == i
def contains(s: Set, i: Int) = s(i)
Я также прочитал wiki типа агностики языка. Кажется, С#, C, Haskel также имеют аналогичный грамматик. http://en.wikipedia.org/wiki/Function_type.
Мой вопрос в том, в каком случае вы предпочитаете определять одну из таких функций абстрактного типа и использовать его,
И нет другого выбора для достижения той же цели? Сравнивая непосредственно с конкретным методом с помощью def
Или я могу потерять это требование, чтобы сказать, используя этот тип функции, я могу сделать код намного лучше. Чтобы я мог узнать больше о типе функции.
Здесь моя главная интересующая часть type Set = Int => Boolean
, когда вы хотите ее абстрагировать? Я ищу случай использования в реальной жизни и как реализовать его в конкретном методе в грамматике scala.
Например, это немного сложнее.
type Set2 = (Int,Int,String) => (Boolean => Int) => (Boolean => Int).
Я знаю, что это называется более высокосортными типами. Сам грамматик действительно имеет смысл. Но мне просто нужны более простые примеры реальной жизни для начинающих scala.
Я нашел этот ответ, описывающий его. Что такое более высокий тип в Scala?
Но это все еще выглядит немного неясным для меня. Я предпочитаю простой ответ для новичка. Похоже, что сама функция не требовала ничего, кроме параметра и типа результата, для реализации mentod. Например, если результат (Boolean) не исходит из параметра (Int), он все еще компилируется.
def set(i: Int): Set1 = aa => new Date().getDate() == i
Неужели я не прав?
Сообщите мне, почему этот вопрос не ясен или плох, поэтому я могу его улучшить, сэр!