Как этот параметр в конструкторе используется в методе-члене непосредственно в FSharp? - PullRequest
0 голосов
/ 02 марта 2019

Этот пример (встречный пример) приведен в разделе «Удаление циклических зависимостей» в FSharp для развлечения и получения прибыли.https://fsharpforfunandprofit.com/posts/removing-cyclic-dependencies/.

type Customer(name, observer:CustomerObserver) = 
        let mutable name = name
        member this.Name 
            with get() = name
            and set(value) = 
                name <- value
                observer.OnNameChanged(this)

and CustomerObserver() = 
    member this.OnNameChanged(c:Customer) =     
        printfn "Customer name changed to '%s' " c.Name

См. Параметр observer в классе Customer.Он не объявлен как поле или свойство в типе.Что тогда?

1 Ответ

0 голосов
/ 02 марта 2019

В F # аргументы из конструктора находятся в области видимости всего объявления класса.Это отличается от C # и VB.

Это упоминается в документации здесь .

Аргументы первичного конструктора находятся в области видимости всего объявления класса.

...