久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在 Ruby 中是否可以像在 PHP 中那樣自動初始化多維

Is auto-initialization of multi-dimensional hash array possible in Ruby, as it is in PHP?(在 Ruby 中是否可以像在 PHP 中那樣自動初始化多維哈希數組?)
本文介紹了在 Ruby 中是否可以像在 PHP 中那樣自動初始化多維哈希數組?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我習慣于在 PHP 中使用多維數組,我可以在其中分配和初始化散列

I am so used to work in PHP with multi-dimensional arrays, where I can assign and initialize a hash by

unset($a); // just to show that there is no variable $a
$a['settings']['system']['memory'] = '1 Gb';
$a['settings']['system']['disk space'] = '100 Gb';

有沒有辦法在 Ruby 中做類似的事情?或者我需要先初始化所有維度,然后再賦值.是否可以定義一個高級哈希來執行我需要的操作?你會怎么做?

Is there a way to do similar thing in Ruby? Or I need to initialize all dimensions first, and then to assign values. Is it possible to define an advanced Hash which will allow to do what I need? How would you do that?

更新

除了Douglas提出的解決方案(見下文),我還找到了一個該主題的線程,其中 Brian Schr??er 提出了 Hash 類的擴展:

In addition to the solution proposed by Douglas (see below), I have found a thread on the subject, in which Brian Schr??er has proposed an extension for the Hash class:

class AutoHash < Hash
  def initialize(*args)
    super()
    @update, @update_index = args[0][:update], args[0][:update_key] unless args.empty?
  end

  def [](k)
    if self.has_key?k
      super(k)
    else
      AutoHash.new(:update => self, :update_key => k)
    end
  end

  def []=(k, v)
    @update[@update_index] = self if @update and @update_index
    super
  end
end

它可以解決在僅請求項目值時意外創建丟失的哈希項目時的問題,例如a['key'].

It allows to solve the problem when a missing hash item is undesirably created when the item value was only requested, e.g. a['key'].

一些額外的參考資料

  1. ruby 哈希自動激活(方面)
  2. http://trevoke.net/blog/2009/11/06/auto-vivifying-hashes-in-ruby/
  3. http://www.eecs.harvard.edu/~cduan/technical/ruby/ycombinator.shtml

推薦答案

試試這個:

def hash_with_default_hash
    Hash.new { |hash, key| hash[key] = hash_with_default_hash }
end

a = hash_with_default_hash

如果鍵不存在,則塊的結果將用作默認值.在這種情況下,默認值也是一個散列,它使用散列作為其默認值.

If the key doesn't exist, then the result of the block will be used as the default value. In this case, the default value is also a hash which uses hashes as its default values.

這篇關于在 Ruby 中是否可以像在 PHP 中那樣自動初始化多維哈希數組?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Joining 2 tables in SELECT(MYSQL/PHP)(在 SELECT(MYSQL/PHP) 中加入 2 個表)
How to make lt;option selected=quot;selectedquot;gt; set by MySQL and PHP?(如何使lt;option selected=“selectedgt;由 MySQL 和 PHP 設置?)
Auto populate a select box using an array in PHP(使用 PHP 中的數組自動填充選擇框)
PHP SQL SELECT where like search item with multiple words(PHP SQL SELECT where like search item with multiple words)
json_encode produce JSON_ERROR_UTF8 from MSSQL-SELECT(json_encode 從 MSSQL-SELECT 產生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名稱 ASC)
主站蜘蛛池模板: 91成人在线视频 | 日韩免费在线 | 久久一热 | 国产精品免费福利 | 精品国产乱码久久久久久牛牛 | 国产精品久久久久久久久污网站 | 爱爱视频在线观看 | 久久久久亚洲av毛片大全 | 成人精品一区二区户外勾搭野战 | 久久久久久久久久久久久九 | 视频一区二区在线观看 | 亚洲欧洲一区 | 中文字幕在线视频免费观看 | 成人网在线观看 | 久www| 日本精品久久久久久久 | 国产精品毛片无码 | 免费在线国产视频 | 岛国av一区二区三区 | 一级美国黄色片 | 美女爽到呻吟久久久久 | 日韩精品一区二区三区在线播放 | 台湾av在线| 日韩精品一区中文字幕 | 欧洲亚洲一区二区三区 | 超碰3| 日韩电影中文字幕 | 色一阁 | 久草免费在线视频 | 一区二区三区在线 | av网站推荐 | 欧美中文字幕一区 | www.久久久久久久久久久久 | 亚洲激情一区二区三区 | 天天操天天干天天透 | 精品欧美乱码久久久久久 | 国产精品夜夜春夜夜爽久久电影 | 久久久国产一区二区三区四区小说 | 日韩欧美精品一区 | 成人国产精品 | 99视频在线免费观看 |