streamz - swift use in bank




সুইফ্ট একাধিক টাইপ সীমাবদ্ধতা (3)

আপনার দুটি সম্ভাবনা আছে:

  1. জিয়ারোর উত্তরে নির্দেশিত হিসাবে আপনি যেখানে একটি ধারা ব্যবহার করেন:

    func someFunc<T where T : SomeProtocol, T : SomeOtherProtocol>(arg: T) {
        // do stuff
    }
  2. আপনি একটি প্রোটোকল রচনা ধরনের ব্যবহার করুন:

    func someFunc<T : protocol<SomeProtocol, SomeOtherProtocol>>(arg: T) {
        // do stuff
    }

চলুন বলি আমার এই প্রোটোকল আছে:

protocol SomeProtocol {

}

protocol SomeOtherProtocol {

}

এখন, যদি আমি এমন কোনও ফাংশন চাই যা জেনেরিক টাইপ করে তবে সেটি অবশ্যই কিছু SomeProtocol সাথে SomeProtocol আমি করতে পারি:

func someFunc<T: SomeProtocol>(arg: T) {
    // do stuff
}

কিন্তু একাধিক প্রোটোকল জন্য টাইপ সীমাবদ্ধতা যোগ করার একটি উপায় আছে কি?

func bothFunc<T: SomeProtocol | SomeOtherProtocol>(arg: T) {

}

একই জিনিস কমা ব্যবহার করে, কিন্তু এই ক্ষেত্রে, এটি একটি ভিন্ন ধরনের ঘোষণা শুরু হবে। আমি কি চেষ্টা করেছি এখানে।

<T: SomeProtocol | SomeOtherProtocol>
<T: SomeProtocol , SomeOtherProtocol>
<T: SomeProtocol : SomeOtherProtocol>

আপনি কোনও বিভাগটি ব্যবহার করতে পারেন যা আপনাকে প্রয়োজনীয় সংখ্যক প্রয়োজনীয়তা নির্দিষ্ট করতে দেয় (যা সব পূরণ করতে হবে) কমা দ্বারা বিভাজিত

সুইফ্ট 2:

func someFunc<T where T:SomeProtocol, T:SomeOtherProtocol>(arg: T) {
    // stuff
}

সুইফ্ট 3 এবং 4:

func someFunc<T: SomeProtocol & SomeOtherProtocol>(arg: T) {
    // stuff
}

বা আরো শক্তিশালী যেখানে ধারা:

func someFunc<T>(arg: T) where T:SomeProtocol, T:SomeOtherProtocol{
    // stuff
}

আপনি অবশ্যই প্রোটোকল রচনা ব্যবহার করতে পারেন (উদাহরণস্বরূপ, protocol<SomeProtocol, SomeOtherProtocol> ), তবে এটি একটু কম নমনীয়।

একাধিক ধরনের জড়িত যেখানে ক্ষেত্রে আপনি মোকাবেলা করতে দেয় where ব্যবহার করে।

আপনি এখনও একাধিক স্থানে পুনঃব্যবহারের জন্য প্রোটোকলগুলি রচনা করতে চান, বা শুধুমাত্র সংকলিত প্রোটোকলটিকে অর্থবহ নাম দিতে দিতে পারেন।


সুইফ্ট 3.0 এ বিবর্তন কিছু পরিবর্তন আনতে। আমাদের দুটি পছন্দ এখন একটু ভিন্ন চেহারা।

সুইফ্ট 3.0 এ কোন বিভাগ ব্যবহার করে:

where অধ্যায় এখন পাঠযোগ্যতা উন্নত করার জন্য একটি ফাংশন স্বাক্ষর শেষে সরানো হয়েছে। তাই একাধিক প্রোটোকল উত্তরাধিকার এখন এই মত দেখাচ্ছে:

func someFunc<T>(arg: T) where T:SomeProtocol, T:SomeOtherProtocol {

}

প্রিফট ব্যবহার করে protocol<> সুইফ্ট 3.0 এ নির্মাণ করুন:

protocol<> ব্যবহার করে গঠন protocol<> গঠন বাতিল করা হচ্ছে। পূর্ববর্তী protocol<SomeProtocol, SomeOtherProtocol> এখন এই রকম দেখাচ্ছে:

func someFunc<T:SomeProtocol & SomeOtherProtocol>(arg: T) {

}

তথ্যসূত্র।

এখানে where পরিবর্তনগুলি সম্পর্কে আরো তথ্য: https://github.com/apple/swift-evolution/blob/master/proposals/0081-move-where-expression.md

এবং, প্রোটোকলের জন্য আরো পরিবর্তন <> গঠন এখানে রয়েছে: https://github.com/apple/swift-evolution/blob/master/proposals/0095-any-as-existential.md







swift