let
- constant
var
-variable
[কনস্ট্যান্ট বনাম ভেরিয়েবল]
[স্ট্রাক্ট বনাম ক্লাস]
অফিসিয়াল ডক ডকসস.ইউ.ইউইফ.আর্ট.আর্গ জানিয়েছে
এর মান constant
একবার সেট হয়ে গেলে তা পরিবর্তন করা যায় না, যেখানে variable
ভবিষ্যতে একটি আলাদা মানতে সেট করা যায়।
এই পরিভাষা আসলে একটি পুনর্নির্দিষ্ট প্রক্রিয়া বর্ণনা করে
পরিবর্তনীয় - পরিবর্তনযোগ্য - সৃষ্টির পরে অবজেক্টের অবস্থা পরিবর্তন করা যেতে পারে
মান এবং রেফারেন্সের প্রকার [সম্পর্কে]
মান (কাঠামো, এনাম)
সুইফট এর struct
তাদের পরিবর্তনশীলতা অবস্থা পরিবর্তন করতে পারেন:
let
+ + struct
= immutable
= মান ধ্রুবক
এটা করতে পারেন না করা পুনরায় নির্ধারণ বা পরিবর্তন
var
+ struct
= mutable
এটি পুনরায় নিয়োগ দেওয়া যেতে পারে বা পরিবর্তন
রেফারেন্সের ধরণ (শ্রেণি)
সুইফট এর classes
হয়mutable
একটি Priory
let
+ class
= ঠিকানার স্থির
এটি এটিকে পুনরায় নিয়োগ দেওয়া যায় না এবং এটি পরিবর্তনও করা যায়
var
+ + class
এটা হতে পারে পুনরায় নির্ধারণ বা পরিবর্তন
//STRUCT
//let + struct
let letStructA = StructA()
//change FAIL
letStructA.a = 5 //Compile ERROR: Cannot assign to property: 'structALet' is a 'let' constant
//reassign FAIL
letStructA = StructA() // Compile ERROR: Cannot assign to value: 'structALet' is a 'let' constant
//var + struct
var varStructA = StructA()
//change OK
varStructA.a = 5
//reassign OK
varStructA = StructA()
//CLASS
//let + class
let letClassA = ClassA()
//change OK
letClassA.a = 5
//reassign FAIL
letClassA = ClassA() // Compile ERROR: Cannot assign to value: 'classALet' is a 'let' constant
//var + class
var varClassA = ClassA()
//change OK
varClassA.a = 5
//reassign OK
varClassA = ClassA()
mutating
- স্ট্রাক্টের কার্যগুলিকে মিউটেশন করা
আপনি কোনও কাঠামোর পদ্ধতি হিসাবে চিহ্নিত করতে পারেনmutating
- ইঙ্গিত করে যে এই ফাংশনটি অভ্যন্তরীণ সম্পত্তি মান পরিবর্তন করে।
- শুধুমাত্র
var
+ এ ব্যবহার করা যেতে পারেstruct
public struct StructA {
public var a = 0
public init() {}
//func foo() { //Compile ERROR: Cannot assign to property: 'self' is immutable
mutating func foo() {
a = 5
}
}
inout
কোনও ফাংশনের অভ্যন্তরে কাঠামো পরিবর্তন করা
আপনি কোনও ফাংশনের প্যারামিটারটিকে চিহ্নিত করতে পারেন (যা স্ট্রাক্ট) inout
যেহেতু struct
একটি মান প্রকার, এটি মান দ্বারা পাস করা হয় ফলাফল ফাংশনটি অনুলিপি অর্জন করবে। আপনি যদি কোনও প্যারামিটার struct
হিসাবে চিহ্নিত করেন inout
তবে এর অর্থ এই যে প্যারামিটারটি হয়ে যায় var
এবং আপনি একটি স্থিতি পরিবর্তন করতে সক্ষম হন struct
এবং এই পরিবর্তনগুলি ফাংশনের সুযোগের বাইরে দৃশ্যমান হবে will
//func foo(myStruct: StructA) { //Compile ERROR: line - myStruct.a = 10: Cannot assign to property: 's' is a 'let' constant
func foo(myStruct: inout StructA) {
myStruct.a = 10
}
//using
//foo(myStruct: &letStructA) // Compile EROOR: Cannot pass immutable value as inout argument: 'letStructA' is a 'let' constant
foo(myStruct: &varStructA)
let
আপনি যখন পারেন ব্যবহার করুন । var
আপনার অবশ্যই যখন ব্যবহার করুন ।