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"

ამიტომ, გასაღებები უნდა იყოს ჰეშებადი და უცვლელი, რათა სიტყვნაკვეთმა სწორად იმუშაოს.