Проблема с перегруженными методами в F # - PullRequest
2 голосов
/ 18 марта 2011

Почему такой код не компилируется?

type MyType() =
    static member myMember (f,(g,h)) = g
    static member myMember (a,(b,c,d)) = MyType.myMember(a,(b,c))
    static member myMember (a,(b,c,d,e)) = MyType.myMember(a,(b,c))

В нем говорится: ... Кортежи имеют разную длину 2 и 4

Это ошибка?

1 Ответ

3 голосов
/ 18 марта 2011

Я не уверен, что это ошибка, но, вообще говоря, определение типа при наличии нескольких перегрузок трудно сделать хорошо.Лучше всего добавить несколько типов аннотаций:

type MyType() =
  static member myMember<'a,'b,'c> (f:'a,(g:'b,h:'c)) = g
  static member myMember (a,(b,c,d)) = MyType.myMember<_,_,_>(a,(b,c))
  static member myMember (a,(b,c,d,e)) = MyType.myMember<_,_,_>(a,(b,c))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...