গ্লোবাল ভেরিয়েবল কীভাবে তৈরি করবেন?


123

আমার একটি বৈশ্বিক পরিবর্তনশীল রয়েছে যা আমার ভিউকন্ট্রোলারদের মধ্যে ভাগ করে নেওয়া দরকার।

অবজেক্টিভ-সি-তে, আমি একটি স্ট্যাটিক ভেরিয়েবল সংজ্ঞায়িত করতে পারি, তবে আমি সুইফটে একটি বৈশ্বিক পরিবর্তনশীল সংজ্ঞায়নের কোনও উপায় খুঁজে পাচ্ছি না।

আপনি এটি করার একটি উপায় জানেন?




আপনি ক্লাসের বাইরে ভেরিয়েবল বা স্ট্রাক্ট সংজ্ঞায়িত করতে পারেন তবে সামগ্রিক প্রয়োগে আপনি সেই পরিবর্তনশীলটি অ্যাক্সেস করতে সক্ষম হন।
চাঁদনী

উত্তর:


209

অফিসিয়াল সুইফ্ট প্রোগ্রামিং গাইড থেকে :

গ্লোবাল ভেরিয়েবলগুলি এমন ভেরিয়েবল যা কোনও ফাংশন, পদ্ধতি, সমাপনী বা প্রসঙ্গে প্রসঙ্গের বাইরে সংজ্ঞায়িত হয়। গ্লোবাল ধ্রুবক এবং ভেরিয়েবলগুলি সর্বদা অলসভাবে গণনা করা হয়।

আপনি এটিকে যে কোনও ফাইলে সংজ্ঞায়িত করতে পারেন এবং moduleযে কোনও জায়গায় এটি বর্তমান অ্যাক্সেস করতে পারেন । সুতরাং আপনি যে কোনও সুযোগের বাইরে ফাইলের কোথাও এটি সংজ্ঞায়িত করতে পারেন। কোন প্রয়োজন নেই staticএবং সমস্ত বিশ্বব্যাপী ভেরিয়েবলগুলি অলসভাবে গণনা করা হয়।

 var yourVariable = "someString"

আপনি বর্তমান মডিউলের যে কোনও জায়গা থেকে এটি অ্যাক্সেস করতে পারেন।

তবে আপনার এড়ানো উচিত কারণ গ্লোবাল ভেরিয়েবলগুলি অ্যাপ্লিকেশন স্টেটের জন্য ভাল নয় এবং মূলত বাগগুলির কারণ হিসাবে।

এই উত্তরে যেমন দেখানো হয়েছে , সুইফটে আপনি এগুলিকে সজ্জিত করতে পারেন structএবং যে কোনও জায়গায় অ্যাক্সেস করতে পারেন। আপনি স্থিতিশীল ভেরিয়েবলগুলি বা সুইফটে ধ্রুবককে সংজ্ঞায়িত করতে পারেন। ভিতরে encapsulatestruct

struct MyVariables {
    static var yourVariable = "someString"
}

আপনি এই পরিবর্তনকটি যে কোনও ক্লাসে বা যে কোনও জায়গায় ব্যবহার করতে পারেন

let string = MyVariables.yourVariable
println("Global variable:\(string)")

//Changing value of it
MyVariables.yourVariable = "anotherString"

3
আপনার স্ট্রাক্ট বলা হয় MyVariables, সুতরাং stackoverflow.com/a/24868789/1187415 :) MyViewStateথেকে একটি অনুলিপি / পেস্ট ত্রুটির মতো দেখায় :)
মার্টিন আর

ধন্যবাদ মার্টিন আর। হ্যাঁ আমি এখান থেকে কোডটি অনুলিপি করেছি
কোডস্টার

9
আপনি যদি অন্য কোনও উত্তর থেকে কোড অনুলিপি করেন তবে আপনার স্পষ্টভাবে এটি বলা উচিত (মূল উত্তরের লিঙ্ক সহ)। স্ট্যাকওভারফ্লো . com/help / রেফারেন্সিংয়ের সাথে তুলনা করুন ।
মার্টিন আর

1
বুঝেছি ধন্যবাদ! তবে স্ট্রাক্টে গ্লোবাল ভেরিয়েবল এবং এনক্যাপসুলেটের মধ্যে কি আলাদা আছে?
czzhengkw

3
"মাইভ্যারিয়েবলস" কী বিশ্বব্যাপী হিসাবে বিবেচিত হবে না? যদি আমরা এটিকে বিশ্বব্যাপী কাঠামো বা পরিবর্তনশীল হিসাবে ঘোষণা করি তবে কীভাবে পার্থক্য হবে?
সত্যম

15

যে কোনও পদ্ধতি বা বন্ধের বাইরে সংজ্ঞায়িত গ্লোবাল ভেরিয়েবলগুলি ব্যক্তিগত কীওয়ার্ড ব্যবহার করে স্কোপ সীমাবদ্ধ হতে পারে।

import UIKit

// MARK: Local Constants

private let changeSegueId = "MasterToChange"
private let bookSegueId   = "MasterToBook"

32
একটি ধ্রুবক ("লেট") পরিবর্তনশীল নয়।
মাইক টাভের্নে 1'16

2
@ মাইকটাভার্ন আপনি ঠিক বলেছেন তবে আপনি এটি "ভার" হিসাবে পরিচয় করিয়ে দিতে পারেন তবে এই উত্তরটি ঠিক থাকবে। swifttipsnet.wordpress.com/2016/09/11/…
মিলাদ ফরিদনিয়া

4

আপনি যদি নিজের ক্লাসে এটি ব্যবহার করতে চান তবে আপনি ব্যবহার করতে পারেন:

public var yourVariable = "something"

আপনি যদি কেবল একটি শ্রেণিতে ব্যবহার করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

var yourVariable = "something"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.