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

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • GoldgenieOfficial

    GoldgenieOff

    23 Temmuz 2009
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005