我有几个模块实现了相同的接口。我只想根据命令行上给出的一个参数加载此模块中的一个。
我正在考虑使用一流的模块,但问题是我想在模块实例化之前执行一些功能。
目前我有这个:
module Arch = (val RetrolixAbstractArch.get_arch() : RetrolixAbstractArch.AbstractArch)
let get_arch () =
let arch = Options.get_arch() in
if arch = "" then
Error.global_error "During analysis of compiler's architecture"
"No architecture specified"
else
if arch = "mips" then
( module MipsArch : AbstractArch)
else
Error.global_error "During analysis of compiler's architecture"
(Printf.sprintf "Architecture %s not supported or unknown" arch)
但是由于尚未解析命令行,因此Options.get_arch
请给我空字符串。
我想在执行此函数之前实现命令行解析(不添加函数中的解析)。可能吗 ?我应该找到其他方法来实现这一目标吗?