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

  • listedabive

    listedabive

    30 Ocak 2007
  • Submissions101

    Submissions1

    23 ŞUBAT 2007
  • World Science Festival

    World Scienc

    1 Mayıs 2008