问题标签 [crystal-lang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
341 浏览

binding - Crystal-Lang C-Binding 结构似乎没有传递空值

我目前正在尝试使用与libxml2的 c 绑定来添加对水晶语言的 c14n 支持。我已经成功地能够使用 xmlC14NDocSave 将规范的 xml 保存到文件中。我遇到的问题是 xmlC14NDocSaveTo 和 xmlC14NExecute 的 xmlOutputBufferPtr。

我收到的错误是(Mac 和 Linux)

xmlC14NExecute:输出缓冲区编码器!= NULL,但 C14N 需要 UTF8 输出

该文件指出

这个缓冲区必须有 encoder==NULL 因为 C14N 需要 UTF-8 输出

src/C14N/lib_C14N.cr我有以下代码

src/C14N.cr

p ouput.encoder 的结果Pointer(Void).null如此看来该值为空。

c14n.c函数只是在 buf->encoder 结构上检查 null

任何帮助将不胜感激,代码可以在我的github帐户上找到。克隆并运行crystal spec

0 投票
1 回答
780 浏览

crystal-lang - 如何从 Crystal 中的字符串名称创建类实例?

我想要与此等效的水晶:

0 投票
2 回答
212 浏览

compile-time - 当#sum 没有 Nils 的数组时,“Nil:Class 的未定义方法‘零’”

当构建数组的变量nil最初是 a 时,就会出现问题。

v停止处于nil某个条件时,这可能是计算的并且在编译时无法解决:

数组得到更复杂的类型,与当前sum实现不兼容,因此p z.sum会导致编译时错误:

我该如何正确应对?
或者它可能等待 stdlibsum方法或其他任何更好的实现?

UPD:inject给出相同的:

0 投票
1 回答
671 浏览

crystal-lang - Crystal 语言:使用什么代替运行时 String::to_sym

我正在尝试将红宝石程序转换为水晶。

我被困住了string.to_sym

我有一个 BIG xml 文件,它太大而无法放入内存。所以解析这一切是不可能的。幸运的是,我不需要所有信息,只需要其中的一部分。所以我自己解析它,删除大部分行。我曾经String::to_sym存储数据,如下所示:

我应该在水晶中使用什么?内存是瓶颈。我不想存储param_name1多次。

0 投票
2 回答
3020 浏览

crystal-lang - 如何指定 JSON 解析的数据类型?

我有一个 JSON 响应,它是一个哈希数组:

我的代码如下所示:

这给了我一个 Array 但似乎我需要对元素进行类型转换才能实际使用它们,否则我会得到undefined method '[]' for Nil (compile-time type is (Nil | String | Int64 | Float64 | Bool | Hash(String, JSON::Type) | Array(JSON::Type))).

我试过as Array(Hash)了,但这给了我can't use Hash(K, V) as generic type argument yet, use a more specific type

如何指定类型?

0 投票
1 回答
119 浏览

crystal-lang - 为什么在水晶中需要将实例变量分配给局部变量?

在 Crystal 编译器源代码中我见过这样的代码

那么,将实例变量分配给局部变量而不是直接使用实例变量的原因是什么?

0 投票
2 回答
374 浏览

xml - 使用 Crystal 从 XML::Nodeset 中的第一个节点检索值

我正在使用 Crystal,并试图在 XML 文档中检索节点的 ID:

我正在使用以下代码获取 ID

如果我检查节点集,我会得到我期望的内容:

[#<XML::Attribute:0x1287690 name="ID" value="bar">]

nodeset.class返回XML::NodeSet一个实例方法[]。所以我相信我应该能够做到这一点来获得价值:

但是,当我打电话时,nodeset[0]我收到以下错误:

我不明白为什么[]当两者都将节点集视为 Float64inspect并将class其视为XML::Nodeset.

我错过了什么?

String 有[]方法,而 Float64 没有,这是巧合吗?

0 投票
1 回答
981 浏览

websocket - 如何在 Crystal 中打开与 WebSocket 服务器的连接(使用 Crystal 作为客户端)

我想使用 Crystal 作为客户端来使用 websocket 服务器连接。Crystal 标准库是否提供 WebSocket 客户端库?

0 投票
1 回答
277 浏览

crystal-lang - Crystal 构建因链接器错误而失败

我刚刚尝试从语言文档中运行简单的 HTTP 服务器。程序因错误而失败。

该程序已从文档中复制粘贴。

我可以确认该程序确实/确实在我的客户机上运行,​​但不在我的主机上。两者都是 Ubuntu 14.04.3 安装。

0 投票
1 回答
102 浏览

crystal-lang - Crystal中将arr的内容打包成二进制序列

是否有一种标准方法可以使用Array#pack方法实现与 Ruby 中相同的结果: