F# का char टाइप टेक्स्ट के सबसे छोटे हिस्सों को दर्शाने वाली 16 बिट की वैल्यू होती है। यह डिफ़ॉल्ट रूप से अपरिवर्तनीय होती है।
char को सिंगल कोट्स के साथ लिटरल के रूप में परिभाषित किया जा सकता है:
let ch = 'A'
// => val ch: char = 'A'
स्ट्रिंग अक्षरों का एक क्रम होती है।
किसी स्ट्रिंग से एक-एक char को (शून्य से शुरू होने वाली) इंडेक्सिंग की मदद से निकाला जा सकता है:
"Exercism"[4] // => 'c'
स्ट्रिंग पर इटरेशन करने पर हर बार एक char मिलता है।
अगला उदाहरण सुविधा के लिए एक हायर-ऑर्डर फंक्शन और एक अनाम फंक्शन का उपयोग करता है। इन्हें आगे सिलेबस में ठीक से समझाया जाएगा, लेकिन अभी के लिए ये स्ट्रिंग के अक्षरों पर लूप लिखने का एक संक्षिप्त तरीका भर हैं।
Seq.map (fun c -> c, int c) "F#" // => [('F', 70); ('#', 35)]
जैसा ऊपर दिखाया गया है, किसी char को उसकी int वैल्यू में बदला जा सकता है।
यह दूसरी लिपियों के लिए भी काम करता है (कम से कम कुछ मामलों में):
Seq.map (fun c -> c, int c) "東京" // => [('東', 26481); ('京', 20140)]
अक्षरों की तुलना करते समय अंदरूनी Int16 का उपयोग होता है:
'A' < 'D' // => true
साथ ही, किसी int को char में बदला जा सकता है:
char 77 // => 'M'
System.Char लाइब्रेरी में वे सारे मेथड मौजूद हैं जो एक .NET भाषा से अपेक्षित होते हैं, जैसे अपरकेस और लोअरकेस में बदलाव:
'a' |> System.Char.ToUpper // => 'A'
'Q' |> System.Char.ToLower // => 'q'
इस अभ्यास में आप डेवलपर की मदद के लिए आइडेंटिफायर नाम साफ करने वाले कुछ यूटिलिटी रूटीन बनाएँगे।
इस अभ्यास के 6 कार्यों में आप धीरे-धीरे दो फंक्शन बनाएँगे: transform, जो अकेले अक्षरों को बदलता है, और clean, जो स्ट्रिंग को बदलता है।
एक मान्य आइडेंटिफायर में शून्य या अधिक अक्षर, अंडरस्कोर, हाइफन, प्रश्नचिह्न और इमोजी हो सकते हैं।
अगर clean फंक्शन को खाली स्ट्रिंग दी जाए, तो उसे भी खाली स्ट्रिंग लौटानी चाहिए।
transform फंक्शन बनाइए, जो हर हाइफन को अंडरस्कोर से बदल दे।
transform '-' // => "_"
व्हाइटस्पेस वाले सारे अक्षर हटा दीजिए। इसमें शुरू और अंत के व्हाइटस्पेस भी शामिल हैं।
transform ' ' // => ""
transform फंक्शन को ऐसे बदलिए कि वह camelCase को kebab-case में बदल दे।
transform 'D' // => "-d"
transform फंक्शन को ऐसे बदलिए कि वह संख्यात्मक अक्षरों को छोड़ दे।
transform '7' // => ""
transform फंक्शन को ऐसे बदलिए कि वह 'α' से 'ω' तक के यूनानी अक्षरों को बदल दे।
transform 'β' // => "?"
clean फंक्शन बनाइए, जो इन कामों को पूरी स्ट्रिंग पर लागू करे।
जो अक्षर इन नियमों से बाहर हैं, वे बिना बदले जैसे हैं वैसे ही रहने चाहिए।
clean " a2b Cd-ω😀 " // => "ab-cd_?😀"
यह विषय सिलेबस में आगे विस्तार से बताया जाएगा।
फिलहाल यह जानना उपयोगी हो सकता है कि एक हायर ऑर्डर फंक्शन होता है जिसका नाम String.collect है। यह char के संग्रह को स्ट्रिंग में बदलता है, और इसके लिए आपके दिए हुए फंक्शन का इस्तेमाल करता है।
let transform ch = $"{ch}_"
String.collect transform "abc" // => "a_b_c_"
Exercism पर साइन अप कीजिए और F# को 18 कॉन्सेप्ट148 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।