ios - ?? সুইফটে অপারেটর




swift (4)

"দ্য সুইফ্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ" বইতে (পৃষ্ঠা 599), আমি এই কোড স্নিপেট জুড়ে এসেছিলাম যে আমাকে এই ধরণের বিভ্রান্ত করেছিল। এটি এভাবে চলে গেল:

func buyFavoriteSnack(person:String) throws {
    let snackName = favoriteSnacks[person] ?? "Candy Bar"
    try vend(itemName:snackName)
}

এর ব্যাখ্যা ছিল:

বয়ফভারিটসন্যাক (_ :) ফাংশন প্রদত্ত ব্যক্তির প্রিয় নাস্তাটি সন্ধান করে এবং এটি তাদের জন্য কেনার চেষ্টা করে। যদি তাদের পছন্দের একটি নাশতা তালিকাভুক্ত না হয় তবে এটি একটি ক্যান্ডি বার কেনার চেষ্টা করে। যদি তারা...

কিভাবে এই ব্যাখ্যা মানচিত্র "??" প্রদত্ত কোডটিতে অপারেটর। কখন আমাদের / এই কোডটি আমাদের নিজস্ব কোডে ব্যবহার করতে পারি?


@ ইকারোর উত্তরের একটি যোগও আপনি সেগুলি আরম্ভ না করে মান ঘোষণা করতে পারেন। আমার মতে এটি আরও ভাল:

func buyFavoriteSnack(person:String) throws {
    // let snackName = favoriteSnacks[person] ?? "Candy Bar"
    let snackName: String

    if let favoriteSnackName = favoriteSnacks[person] {
        snackName = favoriteSnackName
    } else {
        snackName = "Candy Bar"
    }

    try vend(itemName:snackName)
}

এই:

let snackName = favoriteSnacks[person] ?? "Candy Bar"

এটি সমান:

if favoriteSnacks[person] != nil {
    let snackName = favoriteSnacks[person]    
} else {
    let snackName = "Candy Bar"
}

কথায় কথায় ব্যাখ্যা, যদি let স্টেটমেন্টটি snackName থেকে person দখল করতে ব্যর্থ হয় তবে এটি ক্যান্ডি বারটিকে snackName নিয়োগ করবে


নীল কোলেসিং অপারেটর a ?? b a ?? b একটি শর্টকাট a != nil ? a! : b a != nil ? a! : b


let something = a ?? b

মানে

let something = a != nil ? a! : b




swift