Sobes.tech
Junior — Middle

Որ տվյալների կամ օբյեկտների տեսակները կարող են հանդես գալ որպես բանալի բառարաններում կամ հեշ-թերթերում?

sobes.tech AI

Պատասխան AI-ից

Սլաքների (dictionary) կամ հեշ աղյուսակների մեջ բանալիները կարող են լինել օբյեկտներ, որոնք բավարարում են հետևյալ պահանջներին՝

  • Ունեն ճիշտ իրականացված համեմատության մեթոդներ (equals Java-ում, isEqual Swift-ում) և հեշ-կոդի հաշվարկ (hashCode Java-ում):
  • Են անփոփոխ (immutable) կամ առնվազն չեն փոխվում որպես բանալի օգտագործելուց հետո, որպեսզի խուսափել որոնման խնդիրներից:

IOS (Swift)-ում, բառարաններում (Dictionary) սովորաբար օգտագործվում են Hashable պրոտոկոլին համապատասխան տիպեր։ Դրանք կարող են լինել՝

  • Ստանդարտ տիպեր՝ String, Int, Double, Bool։
  • Օգտագործողի սահմանած կառուցվածքներ կամ դասեր, որոնք իրականացնում են Hashable պրոտոկոլը։

Օրինակ՝

struct Person: Hashable {
    let id: Int
    let name: String
}

var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"

Ահա թե ինչու՝ բանալիները պետք է լինեն հեշ-համատեղելի և անփոփոխ, որպեսզի բառարանը ճիշտ աշխատի։