Подтвердить что ты не робот

Нет имен аргументов в абстрактной декларации?

Это типичное объявление абстрактного элемента в F #:

abstract member createEmployee : string -> string -> Employee

Вы определяете типы аргументов, но не их имена. Без имен, как вы определяете, что каждый параметр, когда вы реализуете интерфейс? Другими словами, как вы узнаете, будет ли интерфейс реализован как 1- или 2 -?

1-   member this.createEmployee firstName lastName = ...
2-   member this.createEmployee lastName firstName = ...

Я рассматриваю проблему с неправильной точки зрения (используется для С#)?

4b9b3361

Ответ 1

Как насчет:

abstract member createEmployee : firstName:string -> lastName:string -> Employee

?

Ответ 2

Синтаксис для этого - супертипная ИМО. Я хотел сделать это с параметрами как кортеж (например, метод С#), и только через пробную версию и ошибку я нашел, что это работает:

    abstract member PutChar : x:int * y:int * c:char * flag:Background -> unit

И этот более уродливый вариант также работает:

    abstract member PutChar : x : int * y : int * c : char * flag : Background -> unit

Ниже приведены все, что казалось разумным, но не с той же ошибкой - Unexpected symbol ':' in member definition.:

    // ALL BAD vvv
    abstract member PutChar : (x:int * y:int * c:char * flag:Background) -> unit
    abstract member PutChar : (x:int, y:int, c:char, flag:Background) -> unit
    abstract member PutChar : (x:int) * (y:int) * (c:char) * (flag:Background) -> unit
    // ALL BAD ^^^