আমি স্ট্রিংগুলির একটি অ্যারে টুকরা করছি এবং এটি একটি [String]ভেরিয়েবলের সাথে সেট করে দিচ্ছি , তবে টাইপ পরীক্ষক অভিযোগ করছেন। এটি কি একটি সম্ভাব্য সংকলক বাগ?
var tags = ["this", "is", "cool"]
tags[1..<3]
var someTags: [String] = tags[1..<3]
উত্তর:
একটি ব্যাপ্তির সাথে অ্যারের সাবস্ক্রিপশন একটি অ্যারে ফেরত দেয় না, তবে একটি স্লাইস। আপনি যদিও এই স্লাইস থেকে একটি অ্যারে তৈরি করতে পারেন।
var tags = ["this", "is", "cool"]
tags[1..<3]
var someTags: Slice<String> = tags[1..<3]
var someTagsArray: [String] = Array(someTags)
var someTags = tags[1..<3] var someTagsArray: [String] = someTagsএটি আপনাকে আরও সহায়ক দেয়error: 'Slice<String>' is not convertible to '[String]'
আরেকটি সুবিধাজনক উপায় একটি রূপান্তর করতে ArraySliceকরতে Arrayএই হল:
var tags = ["this", "is", "cool"]
var someTags: [String] = tags[1..<3] + []
এটি নিখুঁত নয় কারণ অন্য বিকাশকারী (বা নিজে) যিনি পরে এটি দেখেন সে এর উদ্দেশ্য বুঝতে পারে না। সুসংবাদটি হ'ল যদি সেই বিকাশকারী (সম্ভবত আপনি) + []এগুলি সরিয়ে ফেলেন তবে তাদের তাত্ক্ষণিকভাবে একটি সংকলক ত্রুটির সাথে দেখা হবে, যা আশা করে এর উদ্দেশ্যটি স্পষ্ট করবে।
স্লাইসটি তৈরি হয়ে গেলে এটিটিকে অ্যারে হিসাবে কাস্ট করুন। একটি মধ্যবর্তী ভেরিয়েবল ব্যবহার না করে আপনার অ্যারেটিকে অ্যারে হিসাবে রাখা। কোডেবল টাইপ ব্যবহার করার সময় এটি দুর্দান্ত কাজ করে।
var tags = ["this", "is", "cool"]
tags = Array(tags[1..<3])
Sliceডকুমেন্টেড পাবেন ? ত্রুটি বার্তাটিও ভুল এবংSliceখেলার মাঠে [স্ট্রিং] হিসাবে প্রদর্শিত হয়। সুতরাং এটি মনে হয় যে দুটি সংকলক ত্রুটি এবং নথিভুক্তি রয়েছে।