Свойства модуля для этих никогда не менялись (или только один раз в начале) настройки? - PullRequest
0 голосов
/ 31 мая 2018

У меня есть следующий модуль, в основном, параметры yyyyMMdd, options и folder передаются для использования многими функциями.Он будет назначен / изменен в main только один раз или не нуждается в обновлении (folder, options).

Как реализовать «Свойство» модуля F #, чтобы не нужно было, чтобы все эти функции имели эти параметры?

module X

let a theDate x options = .... // aDate is used here

let b theDate x folder options = a theDate 30 options //....

let c theDate folder options = b theDate 100 folder options //... other statements omitted. 

let main yyyyMMdd folder options =
    let aDate = .... // convert yyyyMMdd to type DateTime
    ...
    c aDate folder
    ...

Обновление: я определил следующий тип сстатические члены для этого.Это идиоматический F #?

type Settings() =
    static member val TheDate= DateTime.MaxValue with get, set
    static member val Folder = "" with get, set
    static memeber val Options = ??? with get, set

1 Ответ

0 голосов
/ 31 мая 2018

Изменяемые привязки позволяют делать то, что вы просите:

module MyModule =
    let mutable myMutableValue = 42

    let f1 a b = ... // you can use myMutableValue inside

Затем, чтобы изменить его, выполните MyModule.myMutableValue <- xyz.

Обратите внимание, что наличие глобальной изменяемой переменной в модуле не является идиоматическим F #.Не зная больше о том, что вы пытаетесь достичь, трудно дать лучший совет, но если бы я все-таки дал его, я бы сказал, что вы должны оставить его как параметр для всех этих функций (вы будете благодарныпозже, когда у вас нет условий гонки и других ошибок, связанных с изменчивостью).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...