class ostring s = object (self) val s = s method repr = s method concat t = {< s = s ^ t # repr >} end;; |
t
n'est pas nécessairement du type de self, mais doit
seulement posséder une méthode repr du bon type.
Cela rend la class paramétrique (d'où le message d'erreur). Une solution est
donc:
class ['a] ostring s = object (self) val s = s method repr = s method concat (t:'a) = {< s = s ^ t # repr >} end;; |
class ostring s = object (self : 'a) val s = s method repr = s method concat (t:'a) = {< s = s ^ t # repr >} end;; |
t
à être du type de la classe
string
class ostring s = object (self : 'a) val s = s method repr = s method concat (t : ostring) = {< s = s ^ t # repr >} end;; |
ostring_plus
, la méthode concat
ne se comportera pas comme
attendu: elle prendra et un argument du type ostring
et non pas du
type ostring_plus
.