- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在用 Ruby 实现一个循环,但它看起来很难看,我想知道是否有更简洁、更像 Ruby 的编写方式:
def get_all_items
items = []; page = 1; page_items = nil
while page_items != [] # Loop runs until no more items are received
items += (page_items = get_page_items(page))
page += 1
end
items
end
请注意,get_page_items
方法运行 HTTP 请求以获取页面的项目,并且无法知道页面数、项目总数或在实际执行请求之前为任何页面添加项目,直到其中一个返回空项目集。
想象一下翻阅目录并记下所有产品,而事先不知道它有多少页或有多少产品。
最佳答案
我认为这个特殊问题很复杂,因为 A) 没有用于获取项目总数的 API 和 B) 来自 get_page_items
的响应总是真实的。此外,迭代调用肯定会以任意限制向您的数据库发出单独请求的方法,只是为了将它们连接在一起,这对您来说没有意义。冒着重复自己的风险,您应该实现此方法以提示数据库查询(即 model.all
)。
通常,当您定义一个空集合、迭代和转换一个集合,然后返回一个结果时,您应该使用 reduce
(又名 inject
):
array.reduce(0) { |result, item| result + item } # a quick sum
如果不使用 Enumerable,您需要在同一进程中执行某种形式的流式处理,这使得这很困难。我发现这是一个很好的折衷方案,可读性更高,即使过多地抚摸这个 items
变量有点令人反感:
items = []
begin
items << page_items = get_page_items(page ||= 1)
page += 1
end until page_items.empty?
items.flatten
关于ruby - 如何以更简洁的方式重写这个 Ruby 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045298/
我正在用 C# 编写动态语言的解释器,并将原始函数实现为具有虚拟 Apply 方法的抽象类 Primitive,其中每个实际原始函数都是重写 Apply 的子类。 (另一种方法是只拥有类 Primit
我正在用 C# 编写动态语言的解释器,并将原始函数实现为具有虚拟 Apply 方法的抽象类 Primitive,其中每个实际原始函数都是重写 Apply 的子类。 (另一种方法是只拥有类 Primit
我是 Dapper 的新手我正在尝试了解它实际上是如何映射事物的。我有以下数据库结构: calendar | Id | Name | meeting_room | Id | Calendar_id
抱歉问题标题很糟糕。有没有办法在一行中做到这一点: Button button = (Button)Gridview.Cells[0].FindControl("controlname"); butt
在 Java 中在声明点和使用点声明列表/数组文字的tersest方法是什么? 作为次要问题,我更喜欢一种不会导致编译时警告或要求抑制警告的方法。 注意:就我个人而言,这是针对Java 8ish on
什么是现代、简洁、快速的方法来测试节点是否有任何与给定选择器匹配的子节点? “简洁”是指类似于 jQuery 或函数式风格,例如避免循环。我知道本地选择器越来越多地使用这种类型的东西,但没有跟上发展的
getFirstNotNullResult 执行函数列表,直到其中一个函数返回非空值。 如何更优雅/简洁地实现 getNotNullFirstResult? object A { def main
根据 stackoverflow 上某人的推荐,我使用了 jquery succint https://github.com/micjamking/Succinct截断我在 php 网站上的帖子。 它
我是一名优秀的程序员,十分优秀!