Im做一個小項目,涉及國家代碼和撥號代碼紅寶石
- 國家列表
- 國家縮寫列表e.g英國,美國。
- 撥打代碼。
如果用戶輸入+44,它應該拉國家與國家的縮寫
我想知道什麼是最好的方式來實現,這是?我應該創建3個不同的哈希值?或使用嵌套散列?
Im做一個小項目,涉及國家代碼和撥號代碼紅寶石
如果用戶輸入+44,它應該拉國家與國家的縮寫
我想知道什麼是最好的方式來實現,這是?我應該創建3個不同的哈希值?或使用嵌套散列?
重新發明輪子之前,你應該檢查現有的解決方案,如countries gem:
c.number #=> "840"
c.alpha2 #=> "US"
c.alpha3 #=> "USA"
c.country_code #=> "1"
c.national_destination_code_lengths #=> 3
c.national_number_lengths #=> 10
c.international_prefix #=> "011"
c.national_prefix #=> "1"
假設你問是因爲你需要能夠根據任何字段查找數據,可以使用類似下面的方法將記錄映射到三個不同的哈希,其中每個哈希由相關索引領域。
country_codes, names, dial_codes = [
{ country_code: "GB", name: "United Kingdom", dial_code: "44" },
{ country_code: "AU", name: "Australia", dial_code: "61" },
{ country_code: "IT", name: "Italy", dial_code: "39" }
].inject([{}, {}, {}]) do |(cc, n, dc), record|
[
cc.merge(record[:country_code] => record),
n.merge(record[:name] => record),
dc.merge(record[:dial_code] => record)
]
end
p country_codes["AU"]
# => { country_code: "AU", name: "Australia", dial_code: "61" }
p dial_codes["44"]
# => { country_code: "GB", name: "United Kingdom", dial_code: "44" }
另請注意,英國的官方國家代碼是GB,而不是英國。令人困惑,我知道。
」英國的官方國家代碼是GB「。 。 。這可能是因爲英國在法律上是一個由多個國家組成的國家。這種現實往往混淆委員會。 – 2012-04-23 11:59:46
取決於你需要多少的方式來訪問數據。輸入始終是撥號代碼,還是有時需要輸入國家代碼並獲取撥號代碼,或者輸入國家/地區名稱並獲取撥號代碼等? 「 – d11wtq 2012-04-23 10:56:38