【发布时间】:2014-06-14 08:04:22
【问题描述】:
Clojure 新手,想知道如何使用它来让我用其他语言更轻松地编写程序。
我想做的一件事是使用 Clojure 进行代码生成。
例如,给定来自数据文件(EDN 格式)的输入,我应该如何 (1) 遍历此结构或 (2) 将数据推送到现有的模板机制中?
下面的数据将用于定义简单的 REST API,以便您可以从中生成客户端。使用不同的模板生成多种语言的客户端。
(:restcall "GetAccountBalance"
{:method "GET" :path "account/balance"}
{:id int})
(:restcall "GetLastTransactions"
{:method "GET" :path "account/transactions"}
{:page int})
生成的代码类似于
public void GetAccountBalance(int id)
{
var input = new { id = id };
callIntoRestLibrary("GET", "account/balance", input);
}
public void GetLastTransactions(int page)
{
var input = new { page = page };
callIntoRestLibrary("GET", "account/transactions", input);
}
注意:我的最终目标是通过 C# 将这些作为 System.Net.Http.HttpClient 调用,但也能够将它们转换为 JavaScript/Ajax 调用
【问题讨论】:
-
你能举例说明你想得到什么输出吗?也许我们可以举例说明如何实现它。
-
我不确定我是否正确收到了您的消息,但您所做的与this 非常相似
-
我把问题简化了一点。所以现在,假设我没有返回任何数据(我的方法现在将返回 void)。更新的问题。
-
你在问什么:(A)如何使用 Clojure 创建另一种语言的代码文本表示? (B) 如何使用 Clojure 编译代码与 Java/CLR 互操作? (C) 如何在 Clojure 中做 REST,例如与 Compojure? (D) 以上都不是
-
A.韦伯,我正在尝试做(A)。在浏览数据结构时尝试在 Clojure 中找到字符串连接/构建/模板的惯用方式。或者是否有内置的类似 XSLT 的方法。
标签: templates clojure code-generation edn