问题标签 [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.
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
crystal-lang - 如何从 Crystal 中的字符串名称创建类实例?
我想要与此等效的水晶:
compile-time - 当#sum 没有 Nils 的数组时,“Nil:Class 的未定义方法‘零’”
当构建数组的变量nil
最初是 a 时,就会出现问题。
当v
停止处于nil
某个条件时,这可能是计算的并且在编译时无法解决:
数组得到更复杂的类型,与当前sum
实现不兼容,因此p z.sum
会导致编译时错误:
我该如何正确应对?
或者它可能等待 stdlibsum
方法或其他任何更好的实现?
UPD:inject
给出相同的:
crystal-lang - Crystal 语言:使用什么代替运行时 String::to_sym
我正在尝试将红宝石程序转换为水晶。
我被困住了string.to_sym
我有一个 BIG xml 文件,它太大而无法放入内存。所以解析这一切是不可能的。幸运的是,我不需要所有信息,只需要其中的一部分。所以我自己解析它,删除大部分行。我曾经String::to_sym
存储数据,如下所示:
我应该在水晶中使用什么?内存是瓶颈。我不想存储param_name1
多次。
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
。
如何指定类型?
crystal-lang - 为什么在水晶中需要将实例变量分配给局部变量?
在 Crystal 编译器源代码中我见过这样的代码
那么,将实例变量分配给局部变量而不是直接使用实例变量的原因是什么?
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 没有,这是巧合吗?
websocket - 如何在 Crystal 中打开与 WebSocket 服务器的连接(使用 Crystal 作为客户端)
我想使用 Crystal 作为客户端来使用 websocket 服务器连接。Crystal 标准库是否提供 WebSocket 客户端库?
crystal-lang - Crystal 构建因链接器错误而失败
我刚刚尝试从语言文档中运行简单的 HTTP 服务器。程序因错误而失败。
该程序已从文档中复制粘贴。
我可以确认该程序确实/确实在我的客户机上运行,但不在我的主机上。两者都是 Ubuntu 14.04.3 安装。
crystal-lang - Crystal中将arr的内容打包成二进制序列
是否有一种标准方法可以使用Array#pack方法实现与 Ruby 中相同的结果: