gpt4 book ai didi

class - 如何使用类声明将一流模块解压缩为对象模块?

转载 作者:行者123 更新时间:2023-12-01 07:46:19 25 4
gpt4 key购买 nike

我有:

module type A = sig end

此代码有效:

let f x = 
let module X = (val x : A) in
object end

还有这个:

let f (module X : A) = 
object end

但这是无效的:

class c x = 
let module X = (val x : A) in
(* ^^^ Error: Syntax error *)
object end

还有这个:

class c (module X : A) = 
(* ^^^^^^^^^^^^^ Error: Modules are not allowed in this pattern. *)
object end

我不明白:为什么?如何在类上下文中将一流模块解压缩为对象模块?我的编译器版本 = 4.01.0

谢谢

最佳答案

类定义的任何形式的本地模块都是不允许的:

class c =
let module L = List in
object end;;
Characters 18-24:
let module L = List in
^^^^^^
Error: Syntax error

我不确定确切的原因,但我知道了 on very good authority实现起来非常困难。

但是,可以接受类的一流模块参数并将其解压缩到实际使用它的方法和值中。例如:

class c d = object
method foo =
let module D = (val d : A) in
D.b + 5
end

关于class - 如何使用类声明将一流模块解压缩为对象模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25060073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com