1

mongodbを使用してRailsアプリでこのコードに出くわしました:

  """
 Folder format:
{
  name: <folder name>,
  stocks: [
    {
      name: <stock name>,
      id: <stock id>,
      qty: <stock quantity>
    }
  ]
}
 """

  def format_with_folders(stocks)
   fmap = stock_folder_map
   res = stocks.group_by {|s| fmap[s["id"]] }.collect {|fname, ss|
    {
     "name" => fname,
     "stocks" => ss
    }
  }
  new(folders: res)
 end


   def stock_folder_map
     res = {}
     folders.each { |ff|
       ff.stocks.each { |s|
         res[s["id"]] = ff["name"]
       }
     }
    return res
   end
 end

疑問は次のとおりです。1) 三重引用符内のコードは何を意味しますか? コメント付きのコードですか?2) Ruby スクリプト内でこのコードを使用する正しい形式は何ですか?

4

2 に答える 2

1

まず、三重引用符で囲まれた文字列はコメントとしてよく使用されますが、ここではそれが当てはまります。

これをクラス外で機能させるには、正しい構造のフォルダーの配列を返すフォルダー メソッドを作成する必要があります。次のようなことができます。

Folder = Struct.new(:name, :stocks)

def folders
  [
    Folder.new(
      "Folder 1",
      [
        { "name" => "stock name", "id" => "stock id", "qty" => 3 },
        { "name" => "stock name", "id" => "stock id", "qty" => 5 }
      ]
    ),
    Folder.new(
      "Folder 2",
      [
        { "name" => "stock name", "id" => "stock id", "qty" => 2 },
        { "name" => "stock name", "id" => "stock id", "qty" => 1 }
      ]
    )
  ]
end

def format_with_folders(stocks)
  # ...
end

def stock_folder_map
  # ...
end

フォルダー メソッドはオブジェクトの配列を返します。これらのFolderオブジェクトはどちらもnameandstocks属性を持っています。ストックはハッシュの配列です。

于 2013-08-07T11:19:17.540 に答える