ocamllablgtk

How to handle return types with multiple fields


I am calling a method "get_text" on GText.buffer detailed here http://oandrieu.nerim.net/ocaml/lablgtk/doc/GText.buffer.html

let text = textView#buffer#get_text in

However as get_text returns multiple values, when I try to use my variable "text" as a string, for example

textView2#buffer#set_text text;

I get the following error message:

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

How can I access the string being returned by the method? In general, how can I separate the multiple values returned by a method so I can access and use them individually?


Solution

  • I just looked up your link to lablgtk - it looks like you are missing the ():

    let text = textView#buffer#get_text () in ...
    

    The problem with this kind of error is that you are using a (curried) function where a string is required, and the message about the type error sounds kind of "long winded" and not to the point.