ट्रैक
/
F#
F#
/
अभ्यास
/
पासवर्ड जाँच
पासवर्ड जाँच

पासवर्ड जाँच

सीखने का अभ्यास

परिचय

Result टाइप की मदद से एक फंक्शन एक ही वैल्यू लौटा सकता है, जो ये सारी बातें बताती है:

  • ऑपरेशन सफल रहा या नहीं
  • सफल होने पर ऑपरेशन से मिली वैल्यू
  • असफल होने पर असफलता का कारण

उपयोग

Result टाइप एक जेनेरिक टाइप है, जिसके भीतर दो और टाइप होते हैं:

  • सफल ऑपरेशन पर मिलने वाली वैल्यू का टाइप
  • असफल होने पर मिलने वाली एरर का टाइप

Result टाइप एक [डिस्क्रिमिनेटेड यूनियन][discriminated-union] भी है, जिसमें ये केस हो सकते हैं:

  • Ok <value>, जो सफल परिणाम को दर्शाता है
  • Error <reason>, जो असफलता को दर्शाता है

नीचे दिया गया फंक्शन दिखाता है कि Result वैल्यू कैसे बनाई जाती है:

let validateName (name: string) : Result<string, string> = 
    match name with
    | null -> Error "Name not found."
    | "" -> Error "Name is empty."
    | _ -> Ok name

इस उदाहरण में Ok वैल्यू एक स्ट्रिंग है (दिया गया नाम), और Error वैल्यू भी एक स्ट्रिंग है (एरर का कारण, इंसान के पढ़ने लायक रूप में)।

Result वैल्यू के अंदर की जानकारी पढ़ना

इस टाइप डेफिनिशन और फंक्शन सिग्नेचर पर ध्यान दीजिए:

type FileOpenError = 
| NotFound
| AccessDenied
| FileLocked

let openFile (filename: string) : Result<int, FileOpenError> =

जो कोड openFile फंक्शन को कॉल करता है, वह पैटर्न मैचिंग की मदद से सफलता और असफलता दोनों केस संभाल सकता है, जैसा कि इस उदाहरण में दिखाया गया है:

match openFile(filename) with
| Ok handle -> doSomethingWithFile(handle)
| Error NotFound -> printfn $"Error: file {filename} was not found."
| Error AccessDenied -> printfn $"Error: you do not have permission to open the file {filename}."
| Error FileLocked -> printfn $"Error: file {filename} is already in use."

निर्देश

आपको एक पासवर्ड चेकर बनाना है।

पासवर्ड चेकर उपयोगकर्ता के सुझाए गए पासवर्ड की जाँच करता है। जाँच का उद्देश्य यह पक्का करना है कि पासवर्ड उन शर्तों को पूरा करता है, जो उस संसाधन तक पहुँच नियंत्रित करने वाली संस्था तय करती है।

इस अभ्यास में पासवर्ड की शर्तें ये हैं:

  • 12 या उससे अधिक अक्षर होने चाहिए
  • कम से कम एक बड़ा अक्षर होना चाहिए
  • कम से कम एक छोटा अक्षर होना चाहिए
  • कम से कम एक अंक होना चाहिए
  • कम से कम एक चिह्न होना चाहिए, जो !@#$%^&* समूह में से हो

आपके हल को सफलता या विफलता की स्थिति बताने के लिए Result का उपयोग करना है। सफलता की स्थिति में Result को जाँचे गए पासवर्ड को एक स्ट्रिंग के रूप में बताना चाहिए। विफलता की स्थिति में Result को वह नियम बताना चाहिए जिसका उल्लंघन हुआ है।

Note

इस अभ्यास में पासवर्ड चेकर बहुत सरल रहेगा। यह सिर्फ तभी बताएगा जब एक ही नियम का उल्लंघन हुआ हो। आगे के एक अभ्यास में हम एक ज़्यादा वास्तविक पासवर्ड चेकर देखेंगे, जो बता सकता है कि एक साथ कई नियमों का उल्लंघन हुआ है।

1. checkPassword फंक्शन बनाइए

checkPassword फंक्शन दिए गए पासवर्ड की जाँच ऊपर बताए गए नियमों के अनुसार करता है। विफलता की स्थिति में यह बताता है कि कौन-सा नियम टूटा है। इसके लिए वह PasswordRule की कोई एक वैल्यू लेकर उसे Result वैल्यू के अंदर रख देता है।

checkPassword "abcdefghij5#"
// => Error MissingUppercaseLetter

2. ``getStatusMessage` फंक्शन बनाइए

getStatusMessage फंक्शन एक स्ट्रिंग लौटाता है जिसमें पढ़ने लायक संदेश होता है। यह संदेश बताता है कि checkPassword से लौटे रिज़ल्ट का मतलब क्या है।

getStatusMessage (Error MissingDigit)
// => "Error: does not have at least one digit"
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
F# Exercism

पासवर्ड जाँच शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और F# को 18 कॉन्सेप्ट148 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।