ट्रैक
/
Swift
Swift
/
अभ्यास
/
Cal की कस्टम साइन दुकान
Cal की कस्टम साइन दुकान

Cal की कस्टम साइन दुकान

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

परिचय

एक स्ट्रिंग टेक्स्ट डेटा को दर्शाती है। Swift में String Character वैल्यू का एक क्रमबद्ध संग्रह है, जिसमें हर अक्षर एक Unicode अक्षर को दर्शाता है।

स्ट्रिंग बनाने के लिए आप स्ट्रिंग लिटरल इस्तेमाल करते हैं। स्ट्रिंग लिटरल डबल कोटेशन चिह्न (") से घिरे अक्षरों का क्रम होता है। कई लाइनों वाली स्ट्रिंग के लिए तीन डबल कोटेशन चिह्न (""") लगाइए:

let hello: String = "Hello, World!"

let poem: String = """
Roses are red,
Violets are blue.
Sugar is sweet,
And so are you.
"""

Swift की स्ट्रिंग, Foundation फ्रेमवर्क की NSString क्लास के साथ सहज ही जुड़ जाती है। इससे टेक्स्ट प्रोसेस करने की कई सुविधाएँ उपलब्ध होती हैं।

अक्षर

एक Character एक ही विस्तृत ग्रेफीम क्लस्टर को दर्शाता है, यानी ऐसा अक्षर जिसे मनुष्य पढ़ सकता है और जो एक या अधिक Unicode स्केलर वैल्यू से मिलकर बनता है। Unicode स्केलर वैल्यू, U+0000 से U+D7FF तक या U+E000 से U+10FFFF तक की सीमा में रहने वाला 21-बिट कोड पॉइंट होती है, जिसमें दोनों सिरे शामिल हैं।

let aChar: Character = "A"

टाइप अनुमान

जब आप स्ट्रिंग लिटरल लिखते हैं, तो Swift उसका टाइप अपने आप String मान लेता है। किसी एक अक्षर को Character के रूप में संग्रहीत करने के लिए आपको उसका टाइप साफ़-साफ़ लिखना पड़ता है:

let aString = "A"        // Inferred as String
let aChar: Character = "A" // Explicitly typed as Character
print(type(of: aString)) // Prints String
print(type(of: aChar))   // Prints Character

// The following code will not compile:
let badChar: Character = "Too many characters"
// Error: Cannot convert value of type 'String' to specified type 'Character'

जोड़ना

आप जोड़ने वाले ऑपरेटर (+) की मदद से स्ट्रिंग को जोड़ सकते हैं:

print("honey" + "comb")
// Prints "honeycomb"

पहले अक्षर को स्ट्रिंग में बदले बिना आप + की मदद से किसी Character को सीधे String से नहीं जोड़ सकते। लेकिन append(_:) मेथड की मदद से आप किसी स्ट्रिंग या अक्षर को सीधे ऐसी स्ट्रिंग में जोड़ सकते हैं जिसे बदला जा सकता है:

var greeting = "Hello"
let world = ", world"
let period: Character = "."

greeting.append(world)
print(greeting) // Prints "Hello, world"

greeting.append(period)
print(greeting) // Prints "Hello, world."

स्ट्रिंग इंटरपोलेशन

स्ट्रिंग इंटरपोलेशन की मदद से आप स्ट्रिंग लिटरल के अंदर कॉन्स्टेंट, वेरिएबल, लिटरल और एक्सप्रेशन डालकर एक स्ट्रिंग बना सकते हैं। हर एक्सप्रेशन को ब्रैकेट में लपेटिए और उससे पहले बैकस्लैश लगाइए (\( ... )):

let radius = 5.0
let circle = "The area of a circle with radius \(radius) is \(Double.pi * radius * radius)"
print(circle) // Prints "The area of a circle with radius 5.0 is 78.53981633974483"

स्ट्रिंग और अक्षर की प्रॉपर्टी

स्ट्रिंग और अक्षर अपनी सामग्री देखने के लिए कई प्रॉपर्टी देते हैं।

स्ट्रिंग की प्रॉपर्टी

आम स्ट्रिंग प्रॉपर्टी:

प्रॉपर्टी विवरण उदाहरण
isEmpty अगर स्ट्रिंग में कोई अक्षर न हो तो true लौटाती है "Hello".isEmpty का मान false होता है
count स्ट्रिंग में अक्षरों की संख्या लौटाती है "Hello".count का मान 5 होता है

प्रॉपर्टी की पूरी सूची के लिए Apple की String डॉक्युमेंटेशन देखिए।

अक्षर की प्रॉपर्टी

आम अक्षर प्रॉपर्टी:

प्रॉपर्टी विवरण उदाहरण
isLowercase अगर अक्षर छोटा हो तो true लौटाती है "a".isLowercase का मान true होता है
isUppercase अगर अक्षर बड़ा हो तो true लौटाती है "A".isUppercase का मान true होता है
isNumber अगर अक्षर एक अंक हो तो true लौटाती है "1".isNumber का मान true होता है
isWhitespace अगर अक्षर व्हाइटस्पेस हो तो true लौटाती है " ".isWhitespace का मान true होता है

प्रॉपर्टी की पूरी सूची के लिए Apple की Character डॉक्युमेंटेशन देखिए।

टाइप बदलना

आप String(_:) इनिशियलाइज़र की मदद से दूसरे टाइप को स्ट्रिंग में बदल सकते हैं। यह Int, Double और Character जैसे मानक टाइप सपोर्ट करता है:

let charX: Character = "x"
print(String(charX))     // Prints "x"
print(String(110))       // Prints "110"
print(String(Double.pi)) // Prints "3.141592653589793"

खास अक्षर

Swift के स्ट्रिंग लिटरल खास अक्षरों के लिए कई एस्केप सीक्वेंस सपोर्ट करते हैं:

सीक्वेंस विवरण
\0 नल अक्षर
\\ बैकस्लैश
\t आड़ा टैब
\n लाइन फीड (नई लाइन)
\r कैरिज रिटर्न
\' सिंगल कोटेशन चिह्न
\" डबल कोटेशन चिह्न
\u{n} कोई भी Unicode स्केलर (हेक्साडेसिमल)
let quote: String = "\"Hello\", he said."
print(quote) // Prints "Hello", he said.

let unicode: Character = "\u{1F496}"
print(unicode) // Prints 💖

निर्देश

इस अभ्यास में आप ऐसा कोड लिखेंगे जो एक साइन कंपनी को उसके साइन के लिए कस्टम मैसेज बनाने में मदद करेगा।

1. उपयोगी स्ट्रिंग का एक सेट बनाइए

निम्नलिखित कॉन्स्टेंट स्ट्रिंग परिभाषित कीजिए, जो साइन बनाने में इस्तेमाल होंगी:

  • birthday: इसमें "Birthday" वैल्यू होती है
  • valentine: इसमें "Valentine's Day" वैल्यू होती है
  • anniversary: इसमें "Anniversary" स्ट्रिंग होती है

2. उपयोगी अक्षरों का एक सेट बनाइए

निम्नलिखित कॉन्स्टेंट अक्षर परिभाषित कीजिए, जो साइन बनाने में इस्तेमाल होंगे:

  • space: इसमें " " वैल्यू होती है (एक अकेला स्पेस)
  • exclamation: इसमें "!" वैल्यू होती है

3. वाक्यांश जोड़कर मैसेज बनाइए

फंक्शन buildSign(for:name:) बनाइए। यह for आर्गुमेंट लेता है, जिसमें पहले टास्क में परिभाषित तीन स्ट्रिंग में से एक होती है। यह name आर्गुमेंट भी लेता है, जो एक स्ट्रिंग है और उसमें उस व्यक्ति का नाम होता है जिसके लिए साइन है। साइन का मैसेज बनाने के लिए आपको कॉन्कैटिनेशन का इस्तेमाल करना है, और ध्यान रखिए कि पहले से परिभाषित कॉन्स्टेंट दोबारा इस्तेमाल करें। फंक्शन को साइन का मैसेज स्ट्रिंग के रूप में लौटाना चाहिए।

buildSign(for: birthday, name: "Otto")
// returns "Happy Birthday Otto!"

buildSign(for: anniversary, name: "Valentina")
// returns "Happy Anniversary Valentina!"

4. ग्रेजुएशन का साइन बनाइए

फंक्शन graduationFor(name:year:) बनाइए। यह name आर्गुमेंट लेता है, जो एक स्ट्रिंग है और उसमें उस व्यक्ति का नाम होता है जिसके लिए साइन है। यह year आर्गुमेंट भी लेता है, जो एक पूर्णांक है और उसमें वह वर्ष होता है जिसमें व्यक्ति ग्रेजुएट हो रहा है। साइन का मैसेज बनाने के लिए आपको टेम्पलेट स्ट्रिंग का इस्तेमाल करना है। फंक्शन को साइन का मैसेज स्ट्रिंग के रूप में लौटाना चाहिए।

graduationFor(name: "Padma", year: 2023)
// returns "Congratulations Padma!\nClass of 2023"

5. साइन की लागत निकालिए

फंक्शन costOf(sign:) बनाइए। यह sign आर्गुमेंट लेता है, जो एक स्ट्रिंग है और उसमें साइन का मैसेज होता है। साइन की बेस कीमत दी गई करेंसी में 20 है। इसके अलावा हर अक्षर की कीमत 2 है (गणना में स्पेस भी शामिल हैं)। फंक्शन को साइन की लागत पूर्णांक के रूप में लौटाना चाहिए।

costOf(sign: "Happy Birthday Grandma!")
// returns 66
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Swift Exercism

Cal की कस्टम साइन दुकान शुरू करने के लिए तैयार हैं?

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