问题标签 [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.
ruby - 有人尝试过 Crystal 编程语言(机器代码编译的 Ruby)吗?
像许多其他人一样,我始终坚信“对于 Ruby 而言,永远不会存在纯编译器,因为该语言过于动态,静态编译器无法工作。”
但我最近偶然发现了这些:
这两个项目似乎都很有趣。它们可以为我们提供本机编译语言的速度(以及编译语言的商业上经常需要的混淆代码),同时保持 Ruby 的所有(或大部分)优雅和灵活性。添加一个好的支持库(或者,更有可能是访问现有 C++ 库的可能性),您就可以轻松理解为什么这些东西会很有趣。
有人试过水晶语言吗?(我还没有,因为 ruby-llvm 的编译问题)
他/她对此有何感受?
您是否认为,考虑到这些设计选择,是否真的有可能为 Ruby 开发本机代码(机器代码)编译器(通过合理的努力和合理的时间)?会有意义吗?
crystal-lang - 使用正则表达式将字符串拆分为数组,但不删除匹配项
在python中我可以这样做:
并得到:
带水晶:
我得到:
但我想将匹配项保留在数组中,就像在 python 示例中一样。是否可以?
multithreading - Crystal 将 Thread pool 背后的想法转换为 Fibers/spawn
我很难学习 Fibers\coroutines 背后的想法以及 Crystal 中的实现。
我希望这是问这个问题的正确地方,我会完全接受“不在这里”的答案:)
这是我在 Ruby 中处理多线程的常用方法:
这样我打开一个新线程,通常是传入连接或其他东西,将线程添加到线程数组,然后检查我没有比我想要的更多的线程。
使用 spawn\channels\fibers 等在 Crystal 中实现类似功能的好方法是什么?
compile-time - Run arbitrary code at compile time
I know that Crystal has its macro system for defining code at compile time but is it possible to run code apart from that?
For example, can we do this so that it runs during compilation?
Or for a more serious example, can we read from and write to the file system where the compiler is running?
crystal-lang - 在编译时获取导入文件的文件路径
如果我有一个其他文件需要的文件,是否可以获得需要它的文件的绝对文件路径?
因此,如果lib_file.cr
有一个要由app_file.cr
导入它的宏调用,该宏能否app_file.cr
在编译时发现文件路径?
我试过这样的东西:
但是当从执行要求的文件中调用时,它在编译时没有给出任何内容,而在运行时则:
如果我将宏更改为:
它在编译时给了我这个:
那么有没有什么技巧可以在编译时获得app_file.cr
内部的完整路径?lib_file.cr
crystal-lang - 如何在 Crystal 中创建具有可变参数的 Procs?
我想像使用splat一样将参数传递给 Proc ,但它返回错误wrong number of block arguments (1 for 0)
Error in line 11: wrong number of block arguments (1 for 0)
http://carc.in/#/r/7gw
crystal-lang - 如何为方法参数设置默认值
虽然这是有效的 Ruby,但它似乎不在 Crystal 中,我怀疑这是因为打字。如何告诉编译器我想默认为空哈希?
crystal-lang - 如何在 Crystal 中获取第一个匹配条件的元素?
我第一次找了find
和Ruby一样多的API但是没找到find
。所以我认为下一个最好的是select
+ first
(我的数组非常小,所以这很好)。
查看数组的 Crystal APIselect!
需要一个块,就像在 Ruby 中一样。它似乎select!
改变了接收数组,没有select
(我至少可以看到!)。
这是我的代码:
错误是: