我在Rails应用程序中看到了使用mongodb的代码:
"""
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)在红宝石脚本中使用这段代码的正确格式是什么?
发布于 2013-08-07 11:19:17
首先,三元引号字符串经常用作注释,这就是这里的情况。
要使它在类之外工作,您需要创建一个文件夹方法,该方法返回结构正确的文件夹数组。你可以这样做:
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对象数组,该数组具有name和stocks属性。股票是一系列的散列。
发布于 2013-08-07 11:23:44
在Ruby中,如果彼此之间有多个字符串文本,则在解析时将它们连接起来:
'foo' "bar"
# => 'foobar'这是一个由C.
所以,这里有三个字串在一起。第一个字符串文字是空字符串:
""然后是另一个字符串文字:
"
Folder format:
{
name: <folder name>,
stocks: [
{
name: <stock name>,
id: <stock id>,
qty: <stock quantity>
}
]
}
"最后,还有第三个字符串文本,它也是空的:
""在解析时,这将被连接到一个字符串文本中:
"
Folder format:
{
name: <folder name>,
stocks: [
{
name: <stock name>,
id: <stock id>,
qty: <stock quantity>
}
]
}
"而且,由于这个字符串对象没有被任何东西引用,没有分配给任何变量,也没有从任何方法或块返回,所以它将立即得到垃圾收集。
换句话说:整件事是没有操作的,它是死代码。一个足够聪明的Ruby编译器(如JRuby或Rubinius)可能会完全消除它,将其编译为空。
https://stackoverflow.com/questions/18100476
复制相似问题