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.
Sign up to leave a comment.
Не все типы равны