Ocaml 如何处理具有多个字段的返回类型

Ocaml 如何处理具有多个字段的返回类型,ocaml,lablgtk,Ocaml,Lablgtk,我在GText.buffer上调用了一个方法“get_text”,这里有详细说明 但是,例如,当我尝试将变量“text”用作字符串时,get_text返回多个值 textView2#buffer#set_text text; 我收到以下错误消息: Error: This expression has type ?start:GText.iter -> ?stop:GText.iter -> ?slice:bool -> ?visible:bool ->

我在GText.buffer上调用了一个方法“get_text”,这里有详细说明

但是,例如,当我尝试将变量“text”用作字符串时,get_text返回多个值

textView2#buffer#set_text text;
我收到以下错误消息:

Error: This expression has type
     ?start:GText.iter ->
     ?stop:GText.iter -> ?slice:bool -> ?visible:bool -> unit -> string
   but an expression was expected of type string

如何访问该方法返回的字符串?一般来说,如何将一个方法返回的多个值分开,以便能够单独访问和使用它们?

我刚刚查找了您指向lablgtk的链接-看起来您缺少了():


这种错误的问题在于,您使用的是一个需要字符串的(curried)函数,关于类型错误的消息听起来有点“冗长”,并不中肯。

但它确实中肯。该值不是一个字符串,而是一个函数,该函数接受多个可选参数,后跟()返回一个字符串。这不是ocaml的错,函数有这么多可选参数,是吗?@GoswinvonBrederlow我想确切地说是“如果你把()放进去,它就会做你想做的”;-)听起来像是功能请求:-)
Error: This expression has type
     ?start:GText.iter ->
     ?stop:GText.iter -> ?slice:bool -> ?visible:bool -> unit -> string
   but an expression was expected of type string
let text = textView#buffer#get_text () in ...