2013-10-17 11 views
5

रूबी कुछ एक शब्द सरणीरूबी शब्द सरणी हैश के रूप में?

fruits = %w(Apple Orange Melon) 

कहा जाता हो जाता है

fruits = ["Apple", "Orange", "Melon"] 

वहाँ वैसे भी मैं भी एक हैश के रूप में रूबी के शब्द सरणी का उपयोग कर सकते है?

fruits["Apple"] 0, fruits["Orange"] 1 और आगे लौटाएगा। या क्या मुझे इसे हैश के रूप में घोषित करना है?

fruits_hash = { 
    'Apple' => 0, 
    'Orange' => 1, 
    'Melon' => 2, 
} 

उद्देश्य एक क्षेत्र को पूर्णांक के रूप में सहेजने में सक्षम होना है, लेकिन रेल पर एक स्ट्रिंग के रूप में इसका प्रतिनिधित्व करने के लिए है।

उत्तर

12
Hash[%w(Apple Orange Melon).each_with_index.to_a] 
# => {"Apple"=>0, "Orange"=>1, "Melon"=>2} 
+1

मुझे यह बेहतर पसंद है। – Bala

+2

अच्छा है। ..... –

2
Hash[fruits.zip((0...fruits.length).to_a)] 
=> {"Apple"=>0, "Orange"=>1, "Melon"=>2} 
5

यहाँ एक और एक है:

fruits = %w(Apple Orange Melon) 
fruit_hash = Hash[[*fruits.each_with_index]] 
5

आप वास्तव में अपने मामले के लिए Hash जरूरत नहीं है। विभिन्न मामलों में हैंश की आवश्यकता है, उदाहरण के लिए। जैसे डेटा व्यक्त करने के लिए:

{ Apple: :Rosaceae, 
    Orange: :Rutaceae, 
    Melon: :Cucurbitaceae } # botanical family 

या

{ Apple: 27, 
    Orange: 50, 
    Melon: 7 } # the listing of greengrocer's stock 

आप Hash तों कि बस आदेश व्यक्त करते हैं, { Apple: 1, Orange: 2, Melon: 3 } तरह की जरूरत नहीं है - सादे सरणी [ :Apple, :Orange, :Melon ] काफी अच्छा है:

a = :Apple, :Orange, :Melon 
a.index :Orange #=> 1 

साथ ही, मैं आपको के बजाय कभी-कभी Symbol का उपयोग करने के लिए थोड़ा और विचार देने के लिए प्रोत्साहित करता हूं, विशेष रूप से सेब, नारंगी, खरबूजे जैसी चीजें। स्ट्रिंग्स मिठाई, संदेश निकायों, माल विवरण जैसे चीजों के लिए हैं ...

{ Apple: "Our apples are full of antioxidants!", 
    Orange: "Our oranges are full of limonene and vitamin C!", 
    Melon: "Our melons are sweet and crisp!" }  
संबंधित मुद्दे