Странность F# ?
От: hyp1k Россия  
Дата: 03.10.14 10:22
Оценка: 1 (1)
Странным показалось поведение F#. В небольшом проекте решил попробовать реализовать алгоритмы на F#. Сущности были описаны code first entity framework. Одна из сущностей, а именно Вершина графа, должна была послужить ключем в структуре map в коде F#. Для этого вершине нужно было дописать методы:
           public int CompareTo(Vertex that)
            {
                return this.ID.CompareTo(that.ID);                
            }

            public int CompareTo(object other)
            {
                    return 0;
            }


Потом оказалось, что если переводишь последовательность вершин в map

verteces |> Seq.map(fun r -> r,-1.0) |> Map.ofSeq

, вызываются не первые методы, а вторые. Приходится править код:
        public int CompareTo(Vertex that)
            {
                return this.ID.CompareTo(that.ID);                
            }

        public int CompareTo(object other)
            {
                if (other is Vertex)
                    return this.ID.CompareTo((other as Vertex).ID); 
                else
                    return 0;
            }

Ничего страшного, просто меня это удивило. Почему не вызывается изначально первый метод?!
fsharp csharp icomparable
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.