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

  • julioissk84life

    julioissk84l

    18 ŞUBAT 2008
  • Missouri Star Quilt Company

    Missouri Sta

    18 ŞUBAT 2009
  • RocketJump

    RocketJump

    22 ŞUBAT 2006