Pull to refresh

Comments 2

Но не объясняет, на первый взгляд, тоже именованные Func1 и Func2

Func1 и Func2 это имена "функциональных литералов", а не типов. А для литералов обычно применяют структурную типизацию, которая в случае функций определяется сигнаторой. По сути это как числа или строки. Поэтому все логично.

PS Я не знаю есть ли языки, в которых можно было бы ввести явный тип функции, и далее проверять, что функциональный литерал соответствует этому типу. Но было бы любопытно, тогда бы функциональные литералы стали бы номинативно типизированными, что-то вроде вот такого (псеводкод):

type func_t  int=>int
func func_t foo(int) int {/*...*/} // ok
func func_t bar(char) string {/*...*/}// error

И вероятно, такие функции нельзя было бы присвоить/передать куда попало - только туда, где явно прописан тип func_t.

Func1 и Func2 это имена "функциональных литералов", а не типов.

Я понимаю, это ведь раскрывается далее по ходу статьи.

Sign up to leave a comment.

Articles