Как создать метод расширения в F #, например, как это расширение С#:
public static string Right(this string host, int index)
{
return host.Substring(host.Length - index);
}
Ответ 1
Для расширения F #, которое можно вызвать из F #:
type System.String with
member x.Right(index) = x.Substring(x.Length - index)
Обратите внимание, что с Beta 1 это не приводит к методу С# -compatible extension.
Для создания методов расширения, видимых с С# (но не используемых в качестве методов расширения в F #), см. ссылку в редакторе Брайана в исходное сообщение.
Ответ 2
Я знаю, что это не отвечает на ваш вопрос, но стоит отметить. В F # и других функциональных языках вы часто видите модули со статическими методами (например, модуль Seq), которые предназначены для составления с другими функциями. Насколько я видел, методы экземпляров нелегко скомпонованы, что является одной из причин существования этих модулей. В случае этого расширения вы можете добавить функцию в модуль String.
module String =
let right n (x:string) =
if x.Length <= 2 then x
else x.Substring(x.Length - n)