ruby-on-rails - 想要翻译一段ruby的代码,有两句看不懂
PHPz
PHPz 2017-04-21 11:19:07
0
1
903
  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

学习是最好的投资!

répondre à tous(1)
Peter_Zhu

Première question : http://ruby-doc.org/core-2.1.0/Hash.html#method-c-new
Écrivons quelques phrases supplémentaires. Il y a deux façons de l'utiliser

xxx = Hash.new { |hash| Hash.new(false) }

ou

xxx = Hash.new { |hash,key | hash[key] = Hash.new(false);nil }

En fait, le hash = Hash.new(false); écrit ci-dessus dans la question est complètement inutile. Le sens de cette phrase est en fait
. En fait, je veux juste

 Hash.new { Hash.new(false);}

Ça suffit.

Deuxième question : si item_array n'a pas de membre avec le symbole sindex, alors exécutez le @item_array[i] = [] précédent. Cette syntaxe consiste à publier des clauses telles que if (ou while à moins que). Ce qu'il exprime en réalité, c'est

xxx if condition

=>

if condition
  xxx
end

Essentiellement, il manque juste quelques lignes. .

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!