我有一个大表的有效XHTML文件(100兆字节的数据).第一个tr是列(用于数据库),所有其他tr是数据.它是整个文档中唯一的表,它在结构html-> body-> div-> table中.
我如何在Clojure中解析它懒惰的方式?
我知道data.xml,但因为我是Clj初学者,所以我很难让它工作.特别是因为REPL在处理如此大的文件时非常慢.
A有一个字符串,让我们说"Ab Cd"
我有以下字段的文档:['a','b','c','d',...'z'](并非所有文档都包含所有字段)
我只想在字段'a','c','f','x'中搜索,但我想返回文档中的所有字段.
如果任何字段'a','c','f','x'包含以'Ab'或'Cd'开头的字符串,则命中成功.
现在我使用它,但它搜索所有字段而不是选定字段.
{'query': {'query_string': {'query': "Ab* Cd*"}}}
Run Code Online (Sandbox Code Playgroud) 我在 Clojure 中开发了一个系统。我尽量把它写成功能性的。一件事是引用透明度(对于相同的参数,函数应始终返回相同的结果)。
问题是一些函数(尤其是我的视图和部分控制器)获得了太多的参数(比如 5-6,未来可能更多)。
你会如何解决这个问题?
我看到了几个可能的解决方案,每个都有优点和缺点。
1)创建 ParameterMap - 将参数放入 Map 并使用架构(https://github.com/prismatic/schema)对其进行验证- 这是首选解决方案,但此解决方案的问题是我收到运行时错误而不是编译时错误(现在,当我忘记重构应用程序的某些部分时,由于 arity 不好,应用程序拒绝编译)
2)使用闭包——闭包可以捕获命名变量并等待其余的。它检查编译时间。这个解决方案很简单,但让我创建闭包只是为了将大量参数拆分为更多函数,我认为这是进行贫血设计的功能方式。这个解决方案类似于使用 monad,在这种情况下,似乎没有人认为在步骤中添加参数是不干净的,我不明白为什么。
3)将参数转换为命名参数- 我仍然会有大量参数,但它们不再不清楚,因为我可以第一眼看到它们的含义。我在应用程序的其他部分使用了这种方法并且它有效。不幸的是,这在运行时很容易出现 NullPointerException,并且不会在编译时检查。