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