紅寶石中的散列

數(shù)組不是管理Ruby中變量集合的**方法。另一種類型的變量集合是哈希,也稱為關(guān)聯(lián)數(shù)組。散列就像一個(gè)數(shù)組,它是一個(gè)存儲(chǔ)其他變量的變量。但是,散列與數(shù)組不同,因?yàn)榇鎯?chǔ)的變量不是以任何特定順序存儲(chǔ)的,而是使用密鑰檢索它們,而不是按它們?cè)诩现械奈恢脵z索它們。

使用密鑰/值對(duì)創(chuàng)建哈希

散列用于存儲(chǔ)所謂的密鑰/值對(duì)。密鑰/值對(duì)具有標(biāo)識(shí)符,用于表示要訪問(wèn)的散列的哪個(gè)變量要存儲(chǔ)上??破站W(wǎng)在散列中該位置的變量。例如,教師可以將學(xué)生's成績(jī)存儲(chǔ)在哈希中。Bob's等級(jí)將通過(guò)鍵"Bob"在哈希中訪問(wèn);存儲(chǔ)在該位置的變量將是Bob's等級(jí)。

可以以與數(shù)組變量相同的方式創(chuàng)建散列變量。最簡(jiǎn)單的方法是創(chuàng)建一個(gè)空的哈希對(duì)象并用鍵/值對(duì)填充它。請(qǐng)注意,使用索引運(yùn)算符,但使用student's名稱代替數(shù)字

請(qǐng)記住,散列是無(wú)序的,這意味著數(shù)組中沒(méi)有定義的開(kāi)始或結(jié)束。所以,你不能附加到一個(gè)散列。使用索引運(yùn)算符將值簡(jiǎn)單地插入哈希中。

#!/usr/bin/env紅寶石
等級(jí)=Hash.new
等級(jí)["Bob"]=82
等級(jí)["Jim"]=94
等級(jí)["Billy"]=58
輸入grad

散列文件

就像數(shù)組一樣,可以使用散列文獻(xiàn)創(chuàng)建散列。散列l(wèi)iterals使用大括號(hào)而不是方括號(hào),關(guān)鍵字對(duì)通過(guò)=>連接。例如,具有Bob/84的單個(gè)鍵/值對(duì)的散列如下所示:{"Bob"=>84}。其他密鑰/值對(duì)可以通過(guò)文字添加到哈希中用逗號(hào)分隔它們。在下面的例子中,創(chuàng)建了一個(gè)散列,其中包含許多學(xué)生的成績(jī)。

#!/usr/bin/env ruby
等級(jí)={"Bob"=>82,
"Jim"=>94,
"Billy"=>58
}
輸入grad

訪問(wèn)哈希

中的變量

可能有時(shí)候你必須訪問(wèn)散列中的每個(gè)變量。您仍然可以使用each循環(huán)循環(huán)哈希中的變量,盡管它會(huì)以與使用數(shù)組變量的each循環(huán)相同的方式運(yùn)行't的工作方式。由于散列是無(wú)序的,因此每個(gè)將循環(huán)密鑰/值對(duì)的順序可能與插入它們的順序不同。在這個(gè)例子中,等級(jí)的散列將被循環(huán)并打印。

#!/usr/bin/env ruby
等級(jí)={"Bob"=>82,
"Jim"=>94,
"Billy"=>58
}
等級(jí)做|名稱,等級(jí)|
放置"#{name}:#{gra

科普_1