ruby-on-rails - 想要翻译一段ruby的代码,有两句看不懂
PHPz
PHPz 2017-04-21 11:19:07
0
1
902
  1. @item_array = Hash.new { |hash| hash = Hash.new(false) }
  2. @item_array[i] = [] unless @item_array.member? sindex;

第一句觉得很奇怪啊,没理解错的话是创建了一个二维hash表吧。但是很不解的是为什么ruby的hash可以给定一个初始值?只有值吗?键呢?键在哪儿?

第二句那个unless很绕啊,真搞不懂为啥要有这样的关键字,那句话意思是说:
除非存在sindex这个键,我赋值为[],否则。。。得,按我这样理解这个“否则”还不知道要干嘛!?

请大家帮我看看吧,先谢谢啦。

PHPz
PHPz

学习是最好的投资!

全員に返信(1)
Peter_Zhu

最初の質問: http://ruby-doc.org/core-2.1.0/Hash.html#method-c-new
もう少し文章を書いてみましょう

使い方は2つあります。 リーリー

または

リーリー

実際には、質問に書かれている hash = Hash.new(false); という文の意味は全く不要です。 実はただ欲しいだけなんです
リーリー

で十分です。

2 番目の質問: item_array にシンボル sindex を持つメンバーがない場合は、前の

を実行します。この構文は、if (または whilewithout) などの句を後置するものです。実際に表現しているのは @item_array[i] = [] リーリー

=>

リーリー

本質的には、数行が欠けているだけです。 。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!