Uzman F # iyi bir yığın aracılığıyla okudum ve gerçek bir uygulama oluşturmak için çalışıyorum. ayıklarken, ben repl penceresinde şeyler okunaklı hale getirmek için bu gibi fsi komutları geçen alışık büyüdüğümüz:Printf kullanarak özel bir türün çıktısını nasıl özelleştiririm?
fsi.AddPrinter(fun (x : myType) -> myType.ToString())
Ben Printf formatlayıcıyla çalışmak için bu uzatmak istiyorum, bu yüzden mesela yazabilirsiniz
printf "%A" instanceOfMyType
ve özel bir türü için çıkışını kontrol eder. Kitap, bunun yapılabileceğini ima eder (p 93, "Genel yapısal biçimlendirme, herhangi bir kullanıcı tanımlı veri türüyle çalışacak şekilde genişletilebilir, F # web sitesinde bulunan bir konuya ilişkin ), ancak herhangi bir başvuruda bulunamadım. Bunu gerçekten nasıl gerçekleştirebiliriz. Kimse nasıl biliyor mu? Bu mümkün mü?
Düzenleme: Bir kod örneği dahil olması gerekirdi
, ben uğraşıyorum bir kayıt türü örn var
type myType =
{a: int}
override m.ToString() = "hello"
let t = {a=5}
printfn "%A" t
printfn "%A" (box t)
hem baskı ifadeleri verim:
{a = 5;}
BTW, bu bağlantıları kendi yanıtına bir takip yorumunda göndermek için @Brian'a kredi. Bakmaya gelen herkes için bir şeyler yapmaya değdiğini düşündüm. –