2016-04-09 5 views
1

Ich rufe eine Methode „get_text“ auf GText.buffer hier detailliert http://oandrieu.nerim.net/ocaml/lablgtk/doc/GText.buffer.htmlWie Rückgabetypen mit mehreren Feldern

let text = textView#buffer#get_text in 

jedoch zu handhaben als get_text mehrere Werte zurückgibt, wenn ich versuche, meine Variable „Text“ zu verwenden, als String, zum Beispiel

textView2#buffer#set_text text; 

bekomme ich folgende Fehlermeldung:

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 

Wie kann ich auf die Zeichenfolge zugreifen, die von der Methode zurückgegeben wird? Wie kann ich die von einer Methode zurückgegebenen Werte voneinander trennen, sodass ich sie einzeln aufrufen und verwenden kann?

Antwort

2

Ich sah nur Ihren Link bis lablgtk - es sieht aus wie Sie die() fehlen:

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

Das Problem bei dieser Art von Fehler ist, dass Sie eine (curried) Funktion verwenden, wo eine Zeichenkette ist erforderlich, und die Nachricht über den Typfehler klingt irgendwie "langatmig" und nicht auf den Punkt.

+0

Aber es ist genau auf den Punkt. Der Wert ist keine Zeichenkette, sondern eine Funktion, die eine Anzahl von optionalen Argumenten gefolgt von() einem String zurückgibt. Es ist nicht ocamls Fehler die Funktion hat so viele optionale Argumente, oder? –

+0

@GoswinvonBrederlow Ich dachte genau auf den Punkt wäre "wenn du die() dann tust was du willst" ;-) Klingt wie eine Feature-Anfrage :-) –