جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.

×
×
کد تخفیف اسنپ تاکسی با 20% تخفیف! دریافت کد
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

چگونه یک المنت از نوع generic رو در swift روی یک المنت دیگه بسط بدیم؟


2
0
1181

سلام دوستان من تازه شروع کردم به یاد گرفتن Swift و الان دارم سعی میکنم یه مقدار باهاش سرو کله بزنم.

چیزی که الان برام چالش شده، اینه که میخوام ببینم این امکان وجود داره که یک Array<Element> رو از نوع generic با یک محدودیت (constraint) روی یک المنتی که به یک نوع generic دیگه وابسته هست بسط بدیم؟ مثل Element == Optional<Wrapped>

اگه امنت generic نباشه خیلی سادس اینطوری میشه هندلش کرد:

extension Array where Element == String {
    func merge() -> String { ... }
}

ولی برای موردی که گفتم، من این کدو نوشتم که کامپایلر ارور داد:

extension Array<Wrapped> where Element == Optional<Wrapped> {
    func merge() -> Optional<Wrapped> { ... }
}

خلاصه کسی سینتکسش رو میدونه که چطوری میشه همچین کاری انجام داد؟

علمی برنامه-نویسی
ویرایش شده در 5 سال قبل
سوال شده در سعید مرادی
1933 امتیاز

500 کاراکتر باقی مانده

2 جواب

4

شما میتونید اون محدودیت و شرطی که مد نظرتون هست رو روی method بزارید به این شکل:

extension Array {
    func merge<T>() -> T? where Element == T? {
        // ...
    }
}
جواب داده شده در ساناز رضایی
1366 امتیاز


ایده جالبیه تشکر واسه به اشتراک گذاری ــ سعید مرادی در 5 سال قبل

خواهش میکنم، امیدوارم که بدردتون خورده باشه ــ ساناز رضایی در 5 سال قبل

500 کاراکتر باقی مانده


3

مشکل کد شما اینه که نوشتی :

extenstion Array<wrapped> ....

در حالی که وقتی میخوای اکستنش بزنی اون وضعیت generic فقط تو شرط میاد یعنی میشه این :

extension Array where Element == Optional<Wrapped> {
    func merge() -> Optional<Wrapped> { ... }
}

پاسخ داده شده توسط @مهسا.یوسفی

جواب داده شده در سروش قادری نسب
788 امتیاز


تشکر واسه جوابتون امتحانش میکنم ــ سعید مرادی در 5 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


لام تا کام نسخه صفحه کلید نیز راه اندازی شده است. شما با استفاده از کلیدهای موجود بر روی صفحه کلید دستگاهتان می توانید با وب سایت ارتباط برقرار کنید.
لیست کلید های میانبر

تبلیغات توضیحی


عرشیان از کجا شروع کنم ؟
تغییر و تحول با استاد سید محمد عرشیانفر

تبلیغات تصویری


کپی