Например, в примере http://msdn.microsoft.com/en-us/library/ee370378.aspxList.map : ('T -> 'U) -> 'T list -> 'U list
.Что означает «T» и «U» в F #?
Извините, если это звучит упрощенно, но Googling не содержит объяснений.
Спасибо!
Например, в примере http://msdn.microsoft.com/en-us/library/ee370378.aspxList.map : ('T -> 'U) -> 'T list -> 'U list
.Что означает «T» и «U» в F #?
Извините, если это звучит упрощенно, но Googling не содержит объяснений.
Спасибо!
В этом случае 'T
и 'U
- произвольные типы.
В других случаях ограничения могут быть установлены на 't
с использованием ограничений.
Иногда имена могут быть описаны как 'key
или 'value
. В F # ключ состоит в том, что '
перед типом делает его общим.
Аналогично, типы могут иметь префикс #
, который позволяет использовать любой тип, который может быть повышен до данного типа.
Более сложные ограничения типов с использованием встроенных методов могут использоваться с ^
перед именем типа, допускающим ограничения для членов, которые невозможны с использованием системы типа .Net и будут работать только с встроенными функциями F #.
Извините, я просто пропустил ваше сообщение, Джон. В этом случае в чем разница между «T» и «U»? И почему бы не использовать 'a? – misaochan
'' T' и '' U' (не обязательно) разные типы. Выбор использовать 't' вместо' 'a' произволен. –
Вы имеете в виду, что «T может быть любым родовым типом», U может быть любым родовым типом, и мы просто используем «T» и «U» для обозначения любых двух потенциальных разных типов? – misaochan
Из спецификации:
Тип формы «является идент тип переменной. Например, следующие все типы переменных:
'a
'T
'Key
И ваш вопрос о том, почему 'T
и не 'a
:
Примечание: данная спецификация обычно использует прописные идентификаторы, такие как «T или» Key для пользовательских параметров типового типа, и использует строчные идентификаторы, такие как 'a или' b для параметров, генерируемых компилятором .
http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html
В этом случае, все это означает, List.map : ('T -> 'U) -> 'T list -> 'U list
принимает в функции, которая преобразует 'T
значение типа для 'U
типа, список «значений Т типа и возвращает список„типа“U» ценности - это, конечно, то, что делает карта.
Спасибо! Очень полезно. – misaochan
Это может быть любой тип, его названные generics – DevZer0