2012-01-22 13 views
6

में हैशटेबल्स ओकैम में एक ही हैशटेबल (Hashtbl) में विभिन्न प्रकारों को स्टोर करना संभव है? hashtables वास्तव में सिर्फ एक प्रकार के लिए प्रतिबंधित कर रहे हैं?ओकैम

उत्तर

22

हाँ, हैश तालिकाओं प्रविष्टियों प्रत्येक तालिका के लिए एक प्रकार तक ही सीमित हैं। यह वास्तव में OCaml प्रकार sytem और नहीं हैश तालिकाओं के बारे में के बारे में एक सवाल है। यह, एक हैश तालिका में एक ही प्रकार के होने के लिए कैसे के बारे में एक सूची में चीजों की आवश्यकता के लिए अजीब लगता है?

समस्या आप को सुलझाने रहे हैं जानने के बिना, यह पता है कि सुझाव देने के लिए मुश्किल है।

type alg = A of int | B of float 

एक प्रकार का मान (स्ट्रिंग, ALG) Hashtbl.t ints स्टोर होगा: हालांकि, ऐसा करने के लिए एक आम बात एक बीजीय प्रकार प्रकार आप के साथ काम कर रहे हैं में से प्रत्येक के लिए एक संस्करण है कि बनाने के लिए है और तैरता है, देखने कुंजी के रूप में एक स्ट्रिंग का उपयोग।

# let ht = Hashtbl.create 44;; 
val ht : ('_a, '_b) Hashtbl.t = <abstr> 
# Hashtbl.add ht "yes" (A 3);; 
- : unit =() 
# Hashtbl.add ht "no" (B 1.7);; 
- : unit =() 
# ht;; 
- : (string, alg) Hashtbl.t = <abstr> 
# Hashtbl.find ht "yes";; 
- : alg = A 3 

ओकैम के लचीले और मजबूत टाइपिंग में उपयोग करने के बाद, इसके बिना सिस्टम पर वापस जाना मुश्किल है।

संबंधित मुद्दे