بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
typealias چیست و چرا ازش استفاده می کنند
درود خدمت شما در یک آموزشی دیدم که برنامه نویس اومده
typealias DwonloadCompleted = () -> ()
چنین چیزی درست کرده و بعد از اون اومده به صورت زیر یک فانکشن درست کرده
func DownloadWhetherDetails(completed: @escaping DwonloadCompleted){
می خواستم بدونم این دقیقا چرا انجام شده و چه کاری می کنه ؟
تشکر
برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال
کاووس خواجوی
9 سال پیش
+1
0
این یک نوع که می توانید یک خروجی از نوع آن برگردانید این یکی از کاربردهای که تا الان من استفاده کردم مثلا
public typealias sh= (year: y, month: m, day: d)
fun f()-> sh{
a= 10
b= 100
c= 100
return (a,b,c)
}
let date = f()
print(10,100,100)
پاسخ به سوال
شهریار توکلی
9 سال پیش
0
0
تشکر از شما بخاطر وقتی که قرار می دید . فقط سوالی که دارم اینکه چیزی که من در بالا نوشتم . منظورش از کد چی هست؟ یعنی هرچی هست تبدیل بشه به مثلا یک فانکشن ؟
typealias DwonloadCompleted = () -> ()
البته با این مورد رو ذکر کنم که در آخر فانکشن
completed()
نیز قرار داده هست به صورت مثال
func DownloadWhetherDetails(completed: @escaping DwonloadCompleted){
let curentUrlWether = URL(string: CURENT_BASE_URL)!
Alamofire.request(curentUrlWether).responseJSON { response in
if let JSON = response.result.value as? Dictionary<String, Any> {
if let name = JSON["name"] as? String {
self._cityName = name.capitalized
print(self._cityName)
}
if let weather = JSON["weather"] as? [Dictionary<String, AnyObject>] {
if let main = weather[0]["main"] as? String {
self._weatherType = main.capitalized
print(self._weatherType)
}
}
if let main = JSON["main"] as? Dictionary<String, Any> {
if let currentTempChers = main["temp"] as? Double {
let kelvinToFarenheitPreDivision = (currentTempChers * (9/5) - 459.67)
let kelvinToFarenheit = Double(round(10 * kelvinToFarenheitPreDivision/10))
self._currentTemp = kelvinToFarenheit
print(self._currentTemp)
}
}
}
completed()
}
}
پاسخ به سوال
QUQU
9 سال پیش
+1
0
یه سرچ بزنین راجب Completion Handler ها در Swift تا کاملا متوجه بشین. اگه متوجه نشدین بگین تا توضیح بدم.
ببینین به طور کلی اگه بخوام بگم, شبیه Listener ها (پروتوکول ها ) عمل میکنند. مثلا توی یه سری از عملیات ها شما نمیتونین با return مقداری رو برگردونین چون معلوم نیست اون عمل کی اتفاق میفته (مثل Webservice ها که نمیتونین کی جواب ـش برمیگرده.) اون موقع هر وقت که جواب وب سرویس برگشت از Closure استفاده میکنین. (9 سال پیش)
درود خدمت شما تشکر از اینکه وقت قرار می دید . بعله کار کلوژور رو متوجه هستم ولی من چه از
typealias OnCompleted = () -> () از این استفاده بکنم چه نکنم هیچ تفاوتی در کد کلوژور یا کارایی اون نمی کنه انگار بی خودی نوشته شده . بیشتر مشکلم با این typealias هست. لطفا به این مطلب هم سر بزنید لینک (9 سال پیش)
خواهش. خوندم اون تاپیک رو. نه بی خود نیست, شما وقتی onCompleted رو صدا میزنین که یه عمل خاص انجام بشه, مثلا وقتی response ـ Webservice برمیگرده. راجب اون تاپیک دیگه هم که میگین چطور برای response مواردی مثل request و data و ... تعریف شده هیچ ربطی به closure نداره. فرض کنین یه کلاس وجود داره به اسم X که توش یه سری متغیر به اسم request و data و ... تعریف شده. توی closure ـ Alamofire یه object از جنس ـ X واس شما برگردونده میشه که شما به request و data و ... هاش دسترسی دارین. (9 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .