সুইফটে আমি ভেরিয়েবলের প্রকারটি নীচে ঘোষণা করে স্পষ্ট করে সেট করতে পারি:
var object: TYPE_NAME
আমরা যদি এটিকে আরও একধাপ এগিয়ে নিয়ে যেতে চাই এবং একাধিক প্রোটোকলের সাথে সঙ্গতিপূর্ণ এমন একটি ভেরিয়েবল ঘোষণা করি যা আমরা protocol
ঘোষণাটি ব্যবহার করতে পারি :
var object: protocol<ProtocolOne,ProtocolTwo>//etc
আমি যদি এমন কোনও বিষয় ঘোষণা করতে চাই যা একটি বা একাধিক প্রোটোকলের সাথে সঙ্গতিপূর্ণ হয় এবং এটি একটি নির্দিষ্ট বেস শ্রেণীরও হয়? অবজেক্টিভ-সি সমতুল্যটি এর মতো দেখতে পাবেন:
NSSomething<ABCProtocolOne,ABCProtocolTwo> * object = ...;
সুইফটে আমি এটির মতো দেখতে আশা করব:
var object: TYPE_NAME,ProtocolOne//etc
এটি আমাদের বেস ধরণের বাস্তবায়ন এবং প্রোটোকলটিতে সংজ্ঞায়িত যুক্ত ইন্টারফেসের সাথে ডিল করতে সক্ষম হওয়ার নমনীয়তা দেয়।
আমি নিখোঁজ হতে পারে এমন আরও কিছুর উপায় আছে?
উদাহরণ
উদাহরণ হিসাবে, বলুন আমার একটি UITableViewCell
ফ্যাক্টরি রয়েছে যা একটি প্রোটোকলের সাথে খাপ খায় এমন সেলগুলি ফিরিয়ে দেওয়ার জন্য দায়বদ্ধ। আমরা সহজেই একটি জেনেরিক ফাংশন সেটআপ করতে পারি যা কোনও প্রোটোকলের সাথে সঙ্গতিপূর্ণ সেলগুলি প্রদান করে:
class CellFactory {
class func createCellForItem<T: UITableViewCell where T:MyProtocol >(item: SpecialItem,tableView: UITableView) -> T {
//etc
}
}
পরবর্তীতে আমি প্রকার এবং প্রোটোকল উভয়কেই উপকার করতে গিয়ে এই কোষগুলি সনাক্ত করতে চাই
var cell: MyProtocol = CellFactory.createCellForItem(somethingAtIndexPath) as UITableViewCell
এটি একটি ত্রুটি ফেরায় কারণ একটি টেবিল ভিউ সেল প্রোটোকলের সাথে খাপ খায় না ...
আমি উল্লেখ করতে সক্ষম হতে চাই যে ঘরটি একটি UITableViewCell
এবং MyProtocol
ভেরিয়েবল ঘোষণায় মেনে চলে?
ন্যায্যতা
আপনি যদি কারখানার প্যাটার্নটির সাথে পরিচিত হন তবে এটি নির্দিষ্ট ইন্টারফেস প্রয়োগকারী কোনও নির্দিষ্ট শ্রেণীর অবজেক্টগুলিকে ফিরিয়ে দিতে সক্ষম হওয়ার প্রসঙ্গে তা বোঝাতে পারে।
ঠিক আমার উদাহরণের মতো, কখনও কখনও আমরা এমন ইন্টারফেসগুলি সংজ্ঞায়িত করতে চাই যা কোনও নির্দিষ্ট অবজেক্টের সাথে প্রয়োগ করার সময় সার্থক হয়। আমার টেবিল ভিউ সেলটির উদাহরণটি এরকম একটি ন্যায়সঙ্গততা।
সরবরাহিত ধরণটি উল্লিখিত ইন্টারফেসের সাথে যথাযথভাবে সামঞ্জস্য না করে, কারখানাটি যে জিনিসটি দেয় তা হ'ল এবং তাই আমি বেস বর্গের ধরণ এবং ঘোষিত প্রোটোকল ইন্টারফেস উভয়ের সাথে যোগাযোগের ক্ষেত্রে নমনীয়তা চাই would