Es scheint, als ob in der Standardbibliothek des Typs char -> string -> string
keine Funktion vorhanden ist, die vor (oder am Ende von) ein char
ein string
einfügen. Es gibt Problemumgehungen, z.B. mit String.make
oder String.blit
. Gibt es einen eleganten Weg, dies zu tun?
Ich würde den Code von @pad verwenden, weil ich Strings möglichst als unveränderbar behandeln möchte. Aber ich würde Char.escaped
nicht verwenden; Es ist spezialisiert, wenn Sie die OCaml lexikalische Darstellung eines Charakters wollen. Also, was Sie bekommen, wenn Sie diese Änderung machen:
Ich habe die Effizienz verschiedener Ansätze verglichen:
Ich habe einen einfachen Test geschrieben:
%Vor%Ich habe es nativ kompiliert (Intel Core 2 Duo).
Ich habe den Test dreimal für jede Option ausgeführt, ihn mit time
getaktet und die gemittelte reale Zeit berechnet.
Hier sind die Ergebnisse:
s ^ String.make 1 c
: 7.75s ( 100% )
s ^ Char.escaped c
: 8.30s ( 107% )
Printf.sprintf "%s%c" s c
: 68.57s ( 885% )