рубин један лајнере да створи Хасх
Јуче док пролази кроз један од мојих старих програма, нашао сам ово написао мени негде назад:
#begin magic
hash=Hash[*CGI.unescape(raw_text).split('&').map{|x| b=x.split("=");b.push(nil) if b.size==1;b}.flatten]
#end magic
Да убију неке од неизвесности дозволите ми да обелодани да рав_тект изгледа
, Зар она је смањена са паипал уплате признања.
Изнад линије ако је сломљен у деловима гласи боље:
унесцапед_арраи = ЦГИ.унесцапе (рав_тект). Сплит ('&') унесцапед_арраи унесцапед_арраи.цоллецт = {| к | = Б к.сплит ("="); б.пусх (нула) ако б.сизе == 1, б} флаттенед_арраи = унесцапед_арраи.флаттен хасх хасх = [* флаттенед_арраи]
Урадимо појединачне кораке у ИРБ:
ИРБ (главни). 009:0> унесцапед_арраи = ЦГИ.унесцапе (рав_тект) Сплит ('&') => ["УСПЕХ", "мц_гросс = 10.00", "протецтион_елигибилити = неподобним", "паиер_ид = У7ППЈЈ4ТСЈ47Е", "порез = 0.00", "паимент_дате = 10 Сеп 2009 09:45:30, ПСТ", "паимент_статус = чекању "] ИРБ (главни): 013:0> унесцапед_арраи унесцапед_арраи.мап = {| к | = Б к.сплит ("="); б.пусх (нула) ако б.сизе == 1, б} => [["УСПЕХ", нула], ["мц_гросс", "10.00"], ["протецтион_елигибилити", "неподобним"], ["паиер_ид", "У7ППЈЈ4ТСЈ47Е"], ["порез", "0.00"] , ["паимент_дате", "10. јул 2009 09:45:30, ПСТ"], ["паимент_статус", "На чекању"]] ИРБ (главни): 014:0> флаттенед_арраи = унесцапед_арраи.флаттен => ["УСПЕХ" нула ", мц_гросс", "10.00", "протецтион_елигибилити", "неподобним", "паиер_ид", "У7ППЈЈ4ТСЈ47Е", "порез", "0.00", "паимент_дате", "09:45: 30 Јун 10, 2009 ПСТ "," паимент_статус "," На чекању "] ИРБ (главни): 015:0> хасх хасх = [* флаттенед_арраи] => {"Порез" => "0.00", "паимент_статус" => "На чекању", "паиер_ид" => "У7ППЈЈ4ТСЈ47Е", "мц_гросс" => "10.00", "успех" => нула, "паимент_дате" = > "Нов 10 09:45:30, ПСТ 2009", "протецтион_елигибилити" => "неподобним"}
БТУ, * се зове Сплат оператер у рубином
Други начин за креирање хасх од 'низа парова' је да користите убризгати:
хасх = [[1,2], [3,4]] убризгати ({}). {| Резултат елемент, | Резултат [елемент.фирст] = резултат [елемент.ласт]; резултат} Постоји још један начин
Написати петљу, да ћу оставити као вежба на читаоце!
Овде је мало везе случај коришћења стварања хасх од низова:
ИРБ (главни): 005:0> [1,2,3,4,7,9] гроуп_би {| к | к <5.? : Мање :: већу} => {: Мање => [1, 2, 3, 4]: већа => [7, 9]}
То можете да урадите више ствари, у основи резултат блока се користи као кључ за тај елеменат у добијеном хашиш.



































