首页 文章

在OCaml中将类型(原始)转换回原语

提问于
浏览
1

我在OCaml中有一个自定义类型:

type d = DefaultTemplateDir | TemplateDir of string

然后在程序中我应用这个:

let get_full_name ?(template_dir: d = DefaultTemplateDir) file_name =
    let dir = (match template_dir with
    | DefaultTemplateDir -> ""
    | TemplateDir custom_dir -> custom_dir) in
    dir ^ file_name

但我在这里得到一个错误:

This expression has type d but an expression was expected of type string.

如何将TemplateDir类型转换回字符串,以便对其进行字符串操作?

1 回答

  • 2

    您的代码看起来正确 . 你需要把它称为

    get_full_name ~template_dir:(TemplateDir "template-dir") "file-name"
    

相关问题