Junior — Middle
რა ტიპის მონაცემები ან ობიექტები შეიძლება იყოს გასაღებები ლექსიკონებში ან ჰეშ-ცხრილებში?
sobes.tech AI
პასუხი AI-სგან
სლოვაკების (dictionary) ან ჰეშ-ცხრილების გასაღებები შეიძლება იყოს ობიექტები, რომლებიც აკმაყოფილებენ შემდეგ მოთხოვნებს:
- სწორად განხორციელებული თანასწორობის შედარების მეთოდები (
equalsJava-ში,isEqualSwift-ში) და ჰეშ-კოდის გამოთვლის (hashCodeJava-ში). - არიან უცვლელები (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"
ამიტომ, გასაღებები უნდა იყოს ჰეშებადი და უცვლელი, რათა სიტყვნაკვეთმა სწორად იმუშაოს.