स्विफ्ट - सदस्यता

संग्रह, अनुक्रम और सूची में मौजूद तत्वों के तत्वों को एक्सेस करके क्लासेस, स्ट्रक्चर्स और एनुमरेशन में सब्सक्राइबर्स की मदद से किया जाता है। इन सबस्क्राइब का उपयोग इंडेक्स की मदद से वैल्यूज को स्टोर और रिकवर करने के लिए किया जाता है। ऐरे तत्वों को कुछ ऐरे [इंडेक्स] की मदद से एक्सेस किया जाता है और इसके बाद के एलिमेंट्स को डिक्शनरी इंस्टेंस में एक्सेस किया जा सकता है।

एकल प्रकार के लिए, सदस्यता एकल से एकाधिक घोषणाओं तक हो सकती है। हम सबस्क्रिप्ट में दिए गए अनुक्रमणिका मान के प्रकार को ओवरलोड करने के लिए उपयुक्त सबस्क्रिप्ट का उपयोग कर सकते हैं। सदस्यता भी इनपुट डेटा प्रकार घोषणाओं के लिए उपयोगकर्ताओं की आवश्यकताओं के अनुसार एकल आयाम से कई आयाम तक होती है।

सदस्यता घोषणा सिंटेक्स और इसके उपयोग

आइए गणना किए गए गुणों के लिए एक पुनर्कथन करें। अंशदान भी गणना किए गए गुणों के समान ही सिंटैक्स का पालन करते हैं। क्वेरी प्रकार के उदाहरणों के लिए, सदस्यताएँ वर्ग ब्रैकेट के अंदर लिखी जाती हैं, उदाहरण के नाम के साथ। सबस्क्रिप्ट सिंटैक्स उसी सिंटैक्स संरचना का अनुसरण करता है, जो 'इंस्टेंस मेथड' और 'कंप्यूटेड प्रॉपर्टी' सिंटैक्स के रूप में होती है। 'सबस्क्रिप्ट' कीवर्ड का उपयोग सदस्यता को परिभाषित करने के लिए किया जाता है और उपयोगकर्ता अपने रिटर्न प्रकारों के साथ एकल या कई मापदंडों को निर्दिष्ट कर सकता है। अंशधारियों के पास पठन-पाठन या केवल पढ़ने के लिए गुण हो सकते हैं और उदाहरणों को संगृहीत गुणों के रूप में 'गेट्टर' और 'सेटर' गुणों की सहायता से संग्रहीत और पुनर्प्राप्त किया जाता है।

वाक्य - विन्यास

subscript(index: Int) −> Int {
   get {
      // used for subscript value declarations
   }
   set(newValue) {
      // definitions are written here
   }
}

उदाहरण 1

struct subexample {
   let decrementer: Int
   subscript(index: Int) -> Int {
      return decrementer / index
   }
}
let division = subexample(decrementer: 100)

print("The number is divisible by \(division[9]) times")
print("The number is divisible by \(division[2]) times")
print("The number is divisible by \(division[3]) times")
print("The number is divisible by \(division[5]) times")
print("The number is divisible by \(division[7]) times")

जब हम खेल के मैदान का उपयोग करके उपरोक्त कार्यक्रम चलाते हैं, तो हमें निम्नलिखित परिणाम मिलते हैं -

The number is divisible by 11 times
The number is divisible by 50 times
The number is divisible by 33 times
The number is divisible by 20 times
The number is divisible by 14 times

example2

class daysofaweek {
   private var days = ["Sunday", "Monday", "Tuesday", "Wednesday",
      "Thursday", "Friday", "saturday"]
   subscript(index: Int) -> String {
      get {
         return days[index]
      }
      set(newValue) {
         self.days[index] = newValue
      }
   }
}
var p = daysofaweek()

print(p[0])
print(p[1])
print(p[2])
print(p[3])

जब हम खेल के मैदान का उपयोग करके उपरोक्त कार्यक्रम चलाते हैं, तो हमें निम्नलिखित परिणाम मिलते हैं -

Sunday
Monday
Tuesday
Wednesday

सबस्क्रिप्ट में विकल्प

अंशदान कई इनपुट मापदंडों के लिए एकल होता है और ये इनपुट पैरामीटर किसी डेटाटाइप के भी होते हैं। वे चर और वैरिएडिक मापदंडों का भी उपयोग कर सकते हैं। सदस्यता डिफ़ॉल्ट पैरामीटर मान प्रदान नहीं कर सकती है या किसी भी इन-आउट पैरामीटर का उपयोग नहीं कर सकती है।

कई सदस्यता को परिभाषित करने को 'सबस्क्रिप्ट ओवरलोडिंग' के रूप में जाना जाता है, जहां एक वर्ग या संरचना कई उप-परिभाषाओं को आवश्यकतानुसार प्रदान कर सकती है। इन एकाधिक सदस्यताओं को मानों के प्रकारों के आधार पर अनुमान लगाया जाता है जो सबस्क्रिप्ट ब्रेसिज़ के भीतर घोषित किए जाते हैं।

struct Matrix {
   let rows: Int, columns: Int
   var print: [Double]
   init(rows: Int, columns: Int) {
      self.rows = rows
      self.columns = columns
      print = Array(count: rows * columns, repeatedValue: 0.0)
   }
   subscript(row: Int, column: Int) -> Double {
      get {
         return print[(row * columns) + column]
      }
      set {
         print[(row * columns) + column] = newValue
      }
   }
}
var mat = Matrix(rows: 3, columns: 3)

mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0

print("\(mat[0,0])")

जब हम खेल के मैदान का उपयोग करके उपरोक्त कार्यक्रम चलाते हैं, तो हमें निम्नलिखित परिणाम मिलते हैं -

1.0

स्विफ्ट 4 सबस्क्रिप्ट उपयुक्त डेटा प्रकारों के लिए कई पैरामीटर घोषणाओं के लिए एकल पैरामीटर का समर्थन करता है। कार्यक्रम 'मैट्रिक्स' संरचना को 'डबल' डेटा प्रकारों को संग्रहीत करने के लिए 2 * 2 आयामी सरणी मैट्रिक्स के रूप में घोषित करता है। मैट्रिक्स पैरामीटर को पंक्तियों और स्तंभों की घोषणा के लिए इंटेगर डेटा प्रकारों के साथ इनपुट किया गया है।

मैट्रिक्स के लिए नया उदाहरण पंक्ति और स्तंभ गणना को प्रारंभ में दिखाने के लिए पास करके बनाया गया है।

var mat = Matrix(rows: 3, columns: 3)

मैट्रिक्स मानों को उप-पंक्ति में पंक्ति और स्तंभ मानों को पास करके परिभाषित किया जा सकता है, जो नीचे दिखाए गए अल्पविराम द्वारा अलग किया गया है।

mat[0,0] = 1.0  
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0