假设我们已经有啤酒与威士忌两个模块:
module Beer = struct
type t = BEER
let pour () =
let () = Printf.printf "... a nice head ... " in BEER
let consume t = Printf.printf "Ha! Nothing like a good beer to quench the thirst\n"
end
module Whisky = struct
type t = WHISKY
let pour () =
let () = Printf.printf "... 2 fingers of this ...." in WHISKY
let consume _ = Printf.printf "... Ha! Piss of the Gods!\n"
使用OCaml的Functor与First class module
最新推荐文章于 2020-11-25 21:25:33 发布
本文通过示例介绍了如何在OCaml中使用Functor和First class module来创建一个灵活的酒鬼模块。酒鬼模块可以适应不同的饮料(如啤酒和威士忌),这些饮料模块实现了相同的功能接口。通过模块类型Beverage定义接口,然后使用Functor创建Alkie模块,根据用户选择的饮料类型动态注入相应的行为。此外,文章还提供了使用类实现相同功能的方法作为对比。
摘要由CSDN通过智能技术生成