SORU
19 ŞUBAT 2013, Salı


&Quot;modifiye" bir kitapta tek bir alan (bir kayıt, yalnızca bir alan değiştirme kopyalama) için kestirme bir yolu?

Hadi aşağıdaki kayıt ADT ki:

data Foo = Bar { a :: Integer, b :: String, c :: String }

Kaydı alır ve kaydeder (aynı türden) tüm alanlar ama tek bir bağımsız değişken olarak geçirilen aynı değerleri olduğu gibi: döndüren bir işlev istiyorum

walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }

Yukarıda çalışıyor, ama daha çok alan bir kayıt (10) söylemek için, böyle bir işlevi oluşturmak oldukça gereksiz olduğunu düşündüğünüz yazarak çok gerektirecektir.

Aynı işi daha az sıkıcı bir yolu var mı?

CEVAP
19 ŞUBAT 2013, Salı


Evet, kayıt alanları güncelleştirmek için güzel bir yolu var. GHCi ... yapabilirsiniz

> data Foo = Foo { a :: Int, b :: Int, c :: String }  -- define a Foo
> let foo = Foo { a = 1, b = 2, c = "Hello" }         -- create a Foo
> let updateFoo x = x { c = "Goodbye" }               -- function to update Foos
> updateFoo foo                                       -- update the Foo
Foo {a = 1, b = 2, c = "Goodbye" }

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrey Menshikov

    Andrey Mensh

    28 Ocak 2012
  • dope2111

    dope2111

    29 HAZİRAN 2009
  • MrMimoB

    MrMimoB

    11 NİSAN 2011