সুইফটের এক্সহসিউটিভ স্যুইচ স্টেটমেন্টের জন্য ন্যাপ


90

স্যুইফটকে পুরোপুরি স্যুইচ স্টেটমেন্ট দরকার এবং প্রতিটি ক্ষেত্রে এক্সিকিউটেবল কোড থাকে।

'সুইচ' -র 'কেস' লেবেলে কমপক্ষে একটি এক্সিকিউটেবল স্টেটমেন্ট থাকা উচিত

আপনি প্রকৃতপক্ষে কিছু করতে চান না এমন কেসগুলি পরিচালনা করার জন্য কি কোনও ভাল পদ্ধতিতে স্থির হয়েছে? আমি সেখানে একটি প্রিন্টলন () রাখতে পারি, তবে এটি নোংরা লাগে।


উত্তর:


151

বই অনুসারে , আপনাকে breakসেখানে ব্যবহার করতে হবে:

প্রতিটি মামলার সুযোগ খালি থাকতে পারে না। ফলস্বরূপ, আপনাকে অবশ্যই প্রতিটি কেস লেবেলের কোলন (:) এর পরে কমপক্ষে একটি বিবৃতি অন্তর্ভুক্ত করতে হবে। breakযদি আপনি কোনও মিলিত কেসের মূল অংশে কোনও কোড কার্যকর করার উদ্দেশ্যে না থাকেন তবে একটি বিবৃতি ব্যবহার করুন ।


8
ওহ, আবার সুইফ্ট সর্বনিম্ন বিস্ময়ের আইনটি
ভেঙেছে

10
@ জিয়ারো এর প্রয়োজনীয়তা breakনির্দেশ করে যে শাখাগুলি ছাড়াই পতিত breakহতে পারে।
আরএনএমএস

4
একটি সাধারণ ()wokrs, খুব। তবুও আমি পছন্দ করি breakকারণ এটি বিষয়গুলিকে আরও স্পষ্ট করে তোলে। fallthrougবিবৃতি দিয়ে পড়তে কীওয়ার্ডটি ব্যবহার করুন ।
সিএলআর

4
এটি আপনি যখন বিরক্তিকর হন তখন আপনি কেবলমাত্র একমাত্র লাইনের default:ক্ষেত্রে মন্তব্য করতে চান that's এটি ভাল জিনিস বলে মনে হয় না। আমি এটিও সম্মত করি যে এটি আচরণের মাধ্যমে সি এর পতনের পরামর্শদাতা, যা সুইফ্ট যা করেনা তা নয় (এটি জানতে পেরে খুব ভাল লাগছে)।
বেনজাহান

4
এবং আমাকে কেবল এখানে আসতে হয়েছিল তা নিশ্চিত করার জন্য যে বিরতিটি খুব শীঘ্রই
কোনও ঘেরের

12

আপনি একটি breakবিবৃতি ব্যবহার করতে পারেন :

let vegetable = "red pepper"
var vegetableComment: String = "Nothing"
switch vegetable {
case "cucumber", "watercress":
    break // does nothing
case let x where x.hasSuffix("pepper"):
    vegetableComment = "Is it a spicy \(x)?"
default:
    vegetableComment = "Everything tastes good in soup."
}

দস্তাবেজ থেকে উদাহরণ পরিবর্তিত


3

নীচে নাল স্টেটমেন্টের জন্য একটি বিকল্প রয়েছে, তবে সম্ভবত এটি ভাল সমাধান নয়। পাইথন পাসের মতো বিবৃতি পাই না

{}() 

সুইচ ক্ষেত্রে জন্য, বিরতি ভাল পছন্দ।

break

1

অন্যান্য উত্তরে breakউল্লিখিত ছাড়াও , আমি ()কোনও অপ-বিবৃতি বিবৃতি হিসাবেও দেখেছি :

switch 0 == 1 {
case true:
    break
case false:
    ()
}

()আপনি যদি breakবিভ্রান্তি খুঁজে পান বা 3 টি অক্ষর সংরক্ষণ করতে চান তবে ব্যবহার করুন ।


0

আমি সবচেয়ে পরিষ্কার সমাধানটি পেয়েছি হ'ল কেবলমাত্র আপনার শেষ বিবৃতিটিকে স্যুইচ ক্ষেত্রে আপনার ডিফল্ট হিসাবে অন্তর্ভুক্ত করা হয়। এটি breakএখনও সম্ভাব্য সমস্ত ক্ষেত্রে আচ্ছাদন করার সময় যুক্ত বা অন্যান্য অপ্রয়োজনীয় বিবৃতি যুক্ত করার প্রয়োজন এড়ায়।

উদাহরণ স্বরূপ:

switch myVar {

case 0:
    myOtherVar = "Red"

case 1:
    myOtherVar = "Blue"

default:
    myOtherVar = "Green"

}

4
হাই @ স্কটিটিহার্ডি এটি আসলেই প্রশ্নের বিন্দু নয়। আপনি প্রশ্নের উত্তর লিখেছিলেন: "খালি ডিফল্ট কেস যুক্ত করা কীভাবে এড়ানো যায়" (বা সেই লাইনের সাথে কিছু)। আপনার ক্ষেত্রে আপনি সব ক্ষেত্রেই কিছু করছেন। তবে আসুন আমরা বলি যে আপনার একটি কেস রয়েছে (উদাহরণস্বরূপ সংখ্যা 2 এর মতো) যেখানে আপনি কিছু করতে চান না, তারপরে আপনি একই প্রশ্নে ফিরে আসবেন: যখন স্যুইচ ক্ষেত্রে আমরা চাই না তখন কী করতে হবে কিছু করতে? দীর্ঘ গল্প সংক্ষিপ্ত: বিরতি ব্যবহার করুন।
এনরিকোজা

0

বিস্তৃত সুইচ কেস স্টেটমেন্টে কিছুই করবেন না:

দ্রুত:

switch yourVariable {
case .someCase:
    break
}

সুইফটুআই:

switch yourVariable {
case .someCase:
    EmptyView() // break does not work with ViewBuilder
}

SwiftUI ভিউগুলিতে বিরতির পরিবর্তে EmptyView () ব্যবহার করা ত্রুটি প্রতিরোধ করে:

কন্ট্রোল ফ্লো স্টেটমেন্ট সম্বলিত বন্ধটি ফাংশন বিল্ডার ভিউবিল্ডারের সাথে ব্যবহার করা যাবে না।

এম্পটিভিউ () একটি সুইফটুআই স্ট্যান্ডার্ড ভিউ (এক্সকোড 12, আইওএস 14 দিয়ে পরীক্ষা করা) এবং নিজেকে সংজ্ঞায়িত করার দরকার নেই।


0

আপনি নির্দিষ্ট কেসটি চেক করতে পারেন, exhustiveসাথে থাকার দরকার নেইswitch case এস এর

বলুন আপনার মত একটি এনাম আছে,

enum Selection {
        case one
        case two
        case three
    }
var myCase = Selection.one
    

আপনি এই মত চেক করতে পারেন,

    if case .one = myCase {
        print("one")
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.