在 OCaml 中将(原语的)类型转换回原语
Convert type (of primitive) back to primitive in OCaml
我在 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 类型转换回字符串以便我可以对其进行字符串操作?
您的代码看起来是正确的。您需要将其命名为
get_full_name ~template_dir:(TemplateDir "template-dir") "file-name"
我在 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 类型转换回字符串以便我可以对其进行字符串操作?
您的代码看起来是正确的。您需要将其命名为
get_full_name ~template_dir:(TemplateDir "template-dir") "file-name"