찾다

 >  Q&A  >  본문

ruby-on-rails - 想要翻译一段ruby的代码,有两句看不懂

  1. @item_array = Hash.new { |hash| hash = Hash.new(false) }
  2. @item_array[i] = [] unless @item_array.member? sindex;

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

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

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

PHPzPHPz2781일 전922

모든 응답(1)나는 대답할 것이다

  • 天蓬老师

    天蓬老师2017-04-21 11:21:07

    첫 번째 질문: http://ruby-doc.org/core-2.1.0/Hash.html#method-c-new
    몇 가지 문장을 더 써보겠습니다. 사용 방법은 두 가지가 있습니다

    으아악

    또는

    으아악

    사실 위 질문에 적힌 hash = Hash.new(false); 이 문장의 의미는 사실 전혀 필요하지 않습니다. 사실 저는 그냥
    으아악

    그 정도면 됐어요.

    두 번째 질문: item_array에 sindex 기호가 있는 멤버가 없으면 이전

    을 실행하세요. 이 구문은 if(또는 while Except)와 같은 절을 게시하는 것입니다. 실제로 표현하는 것은 @item_array[i] = [] 으아악

    =>

    으아악

    기본적으로 몇 줄만 누락되었습니다. .

    회신하다
    0
  • 취소회신하다