को समझने की कोशिश कर रहा हूं मैं अपने लिफ्ट प्रोजेक्ट में स्कालाज़ का उपयोग शुरू करने की कोशिश कर रहा हूं। उस उद्देश्य के लिए मैं शैली को पूरा करने के लिए कुछ कोड लिख रहा हूं। एक उपयोगकर्ता में लॉग इन करने के लिए एक कोड पर विचार करें:स्केलज़ राज्य मोनड
def login: CssSel = {
var password = ""
def submit() {
if (doLogin) S.redirectTo("/index")
else S.error("Wrong password")
}
"name=pwd" #> SHtml.password(password, password = _) &
"type=submit" #> SHtml.onSubmitUnit(submit)
}
तो, यह किसी भी तरह एक राज्य इकाई का उपयोग कर फिर से लिखा जाना चाहिए। लेकिन मुझे बस नहीं मिला, कैसे। इस कोशिश कर रहा है:, अपडेट किया गया उदाहरण उत्तरों के अनुसार:
val result = for {
s <- init[String]
pass <- SHtml.password(s, put(_))
newPass <- init[String]
res <- "name=pwd" #> pass &
"type=submit" #> SHtml.onSubmit { _ =>
if (User.logIn("username", newPass)) S.redirectTo("/index")
else S.error("Wrong password")
}
} yield (newPass, res)
result ! ""
युपीडी।
स्केलज़ में राज्य मोनैड पर कोई भी अच्छा ट्यूटोरियल/स्पष्टीकरण, gets
, put
आदि का उपयोग करने का तरीका दिखाता है?
क्या आपने मेरे पिछले प्रश्न/उत्तर पर एक नज़र डाली है? http://stackoverflow.com/questions/7734756/scalaz-state-monad-examples – huynhjl
मुझे यकीन नहीं है कि यह वास्तव में व्यावहारिक है।आप केवल कुछ राज्य मोनैड का उपयोग नहीं कर सकते हैं और जादुई रूप से अपने कोड में सभी 'var' से छुटकारा पा सकते हैं। इसके लिए काम करने के लिए आपके पास राज्य परिवर्तनों को चुनने का कुछ साधन होना चाहिए जो लिफ्ट के 'SHtml' के कॉलबैक विधियों का समर्थन नहीं करते हैं। (मुझे लगता है कि लिफ्ट की पूरी अवधारणा ठीक है कि आप कई बंदियों में छिपे हुए चर का उपयोग करते हैं।) मुझे गलत साबित होने में खुशी होगी, हालांकि, और इसका एक उदाहरण उदाहरण देखें। – Debilski
आप सही हैं। धन्यवाद। – folone