Intern
Ինչ են տվյալների տեսակները և որոնք գոյություն ունեն?
sobes.tech AI
Պատասխան AI-ից
Տվյալների տեսակները սահմանում են հնարավոր արժեքների հավաքածուն և գործողությունները, որոնք կարելի է կատարել դրանց վրա: Swift-ում դրանք բաժանվում են Value Types և Reference Types:
Value Types (արժեքային տեսակներ):
- Արժեքները պատճենվում են նշանակման կամ փոխանցման ժամանակ:
- Ամեն փոփոխական կամ կոնստանտ պահում է սեփական անկախ տվյալների պատճենը:
- Մեկ պատճենի փոփոխությունները չեն ազդում մյուսների վրա:
Օրինակներ Value Types:
- Կառուցվածքներ (
struct) - Էնումներ (
enum) - Թյուպլեր (
tuple) - Հիմնական տեսակներ՝
Int,Double,Bool,String, զանգվածներ (Array), բառարաններ (Dictionary), հավաքածուներ (Set):
// Օրինակ Value Type: struct
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 ստանում է p1-ի պատճենը
p2.x = 10 // p2 փոփոխությունը չի ազդում p1-ի վրա
print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)
Reference Types (հղման տեսակներ):
- Արժեքները չեն պատճենվում, երբ նշանակվում կամ փոխանցվում են:
- Հղում է փոխանցվում նույն տվյալների օրինակին հիշողության մեջ:
- Բազմաթիվ փոփոխականներ կամ կոնստանտներ կարող են հղում ունենալ նույն օրինակին:
- Փոփոխությունները մեկ հղումով տեսանելի են մյուս բոլոր հղումներով:
Օրինակներ Reference Types:
- Կլասներ (
class) - Ֆունկցիաներ (
func) - Կապեր (
closure)
// Օրինակ Reference Type: class
class Circle {
var radius: Double
init(radius: Double) {
self.radius = radius
}
}
var c1 = Circle(radius: 5.0)
var c2 = c1 // c2 հղում է նույն օրինակին, ինչ c1
c2.radius = 10.0 // փոփոխությունը ազդում է c1-ի վրա
print("c1 radius: \(c1.radius)") // c1 radius: 10.0
print("c2 radius: \(c2.radius)") // c2 radius: 10.0
Տեղեկատու աղյուսակ հիմնական տեսակների մասին:
| Կատեգորիա | Տիպ(եր) | Value/Reference Type | Նկարագրություն |
|---|---|---|---|
| Թվային ամբողջական | Int, UInt, Int8, UInt8 և այլն |
Value | Բազմազան չափերի ամբողջ թվեր, դրական և բացասական նշանով |
| Ֆլոտային թվեր | Float, Double |
Value | Թվեր տասնորդական մասով |
| Բուլյան | Bool |
Value | Լոգիկական արժեքներ (true կամ false) |
| Տողեր | String |
Value | Տառերի հաջորդականություն |
| Կոլեկցիաներ | Array, Dictionary, Set |
Value | Կարգավորված կամ անկարգավորված հավաքածուներ նույնատիպ տարրերով |
| Սխտորներ | struct |
Value | Անհատական օգտագործողի ձևավորված տեսակներ, պահում են կապված արժեքներ |
| Էնումներ | enum |
Value | Համընդհանուր տեսակ՝ կապված արժեքների խմբի համար |
| Թյուպլեր | (value1, value2, ...) |
Value | Մի քանի արժեքների խմբավորում մեկ կազմային տեսակում |
| Կլասներ | class |
Reference | Անհատական օգտագործողի ձևավորված տեսակներ, որոնք աջակցում են ժառանգությանը և հղման վարքագծին |
| Ֆունկցիաներ | () -> Void, (Int) -> String և այլն |
Reference | Կատարող կոդի բլոկներ |
| Կապեր | { (parameters) -> return type in code } |
Reference | Անհատական կոդի բլոկներ, որոնք կարող են փոխանցվել և օգտագործվել |
| Օպցիոնալներ | Type? (սինտակսիկ շաքար Optional<Type> համար) |
Value | Ներկայացնում է կամ Type արժեքը, կամ նրա բացակայությունը (nil) |
Ընտրությունը Value և Reference տեսակների միջև կախված է խնդիրից: Value տեսակները նախընտրելի են փոքր տվյալների և բեղմնավորության ապահովման համար, Reference տեսակները՝ բարդ օբյեկտների համար, որոնք պահանջում են ընդհանուր վիճակ և ժառանգություն։