2010-09-17 1 views
2

Question rapide. Je viens de lire cela si vous vouliez ajouter une fonction par ex. le module de liste, vous pouvez définir un nouveau module de liste avec cette fonction:Les modules Can F # peuvent-ils être modifiés avec un singe?

module List 
    let foo = // ... 

Est-ce que cela a pour effet d'ajouter foo au module principal de liste, ou avez-vous d'ouvrir explicitement la nouvelle List? Le premier semble être le «rapiéçage de singe» de Ruby; Je suppose que ce dernier serait plus comme des méthodes d'extension.

(je vais essayer ceci mais je ne suis pas près d'un compilateur.)

Répondre

4

Il est un peu comme les espaces de noms; ils sont "ouverts". C'est, je peux avoir deux fichiers ou deux ensembles qui contribuent types dans un espace de noms, et puis si j'utiliser ces fichiers ou références ces assemblées et dire

open ThatNamespace 

Je vois l'union de tous les membres.

3

Cela fonctionne de manière similaire à des méthodes d'extension:

module List = 
    let doSomething lst v = lst |> List.nth v 
Questions connexes