2015-10-10 11 views
7

मैं सभी Yesod वेब अनुप्रयोगों के लिए नमूना कोड के ऊपर अंकन इस तरह की दिखाई दे रही है और इसका क्या मतलब पता नहीं है:X {..} <- getYesod अंकन

getHomeR :: Handler Html 
getHomeR = do 
    App {..} <- getYesod 

इस वाक्य क्या मतलब है?

getHomeR :: Handler Html 
getHomeR = do 
    App x <- getYesod 

अर्थात गुप्त {..} के स्थान पर कुछ पहचानकर्ता x:

मैं भी निम्नलिखित दिखाई दे रही है, मैं संबंधित, अंकन मान।

उत्तर

10

इन्हें record wildcards कहा जाता है - एक रिकॉर्ड परिभाषा (App इस मामले में) दिया गया है, पैटर्न App { .. } सभी फ़ील्ड नामों को दायरे में लाता है। उदाहरण के लिए दिए गए निम्न रिकॉर्ड परिभाषा

{-# LANGUAGE RecordWildCards #-} 
data Test = Test { a :: Int, b :: Int } 

आप जैसे गुंजाइश में a और b क्षेत्रों लाने, एक पैटर्न में इस पर मिलान कर सकते हैं

sumTest :: Test -> Int 
sumTest Test {..} = a + b 
+1

आप GHC दस्तावेज में एक वर्ग से सीधे लिंक कर सकते हैं। उदाहरण के लिए: https://downloads.haskell.org/~ghc/7.10.2/docs/html/users_guide/syntax-extns.html#record-wildcards –

+2

@ टेलरफॉसक - धन्यवाद, मैंने लिंक अपडेट किया। – Lee

संबंधित मुद्दे