2011-08-22 16 views

Odpowiedz

22

Do definicji Grammar i Definition potrzebne jest poprawne kompilowanie. Typ Grammar jest wymieniony jako pierwszy, ale zależy od typu Definition, który jest zdefiniowany później. Aby skompilować poprawnie, musi być połączony z and, który mówi kompilatorowi F #, że definicje typów są zależne/powiązane.

Nie ma powodu, dla Range być zadeklarowane w taki sposób i powinno być uznane z type

+16

Również "Gramatyka" może być umieszczona po deklaracji 'Definicja', a następnie nie będzie żadnego powodu, aby używać' i 'na dowolnym z nich. – Samuel

13

Jest używany do tworzenia wzajemnie powiązanych typów. Zwykle w F # należy przesłać dalej deklarację każdego typu przed jej użyciem - ale nie zawsze jest to możliwe, na przykład wtedy, gdy trzeba wprowadzić cykliczną zależność na dwóch lub więcej typach.

W przykładzie, jeśli zdefiniowano Definition z type zamiast and, nie będzie w stanie opracować definicję Grammar, o ile nie zmienia kolejność, w której są one zdefiniowane.

Zamieszczony przykład kodu nie jest dokładnie dobry, ponieważ wzajemna relacja nie jest w nim niezbędna - można zmienić kolejność. (O ile nie było więcej typów zdefiniowanych poniżej, które zależały od powyższego).

Powiązane problemy