gpt4 book ai didi

compile-time - 在编译时运行任意代码

转载 作者:行者123 更新时间:2023-12-01 07:54:53 25 4
gpt4 key购买 nike

我知道 Crystal 有它的宏系统用于在编译时定义代码,但是否可以运行除此之外的代码?

例如,我们可以这样做以便它在编译期间运行吗?

puts "foobar"

或者更严重的例子,我们可以读取和写入运行编译器的文件系统吗?

最佳答案

我们可以!在run macro method的帮助下或 system macro method .

让我们有一个例子,它在每次构建程序时将随机问候语编译到程序中:

问候.txt:

Hello
Hey
Hi

问候.cr:
puts File.read_lines("#{__DIR__}/greetings.txt").sample

问候者.cr:
puts {{run("./greeting").stringify}}

编译 crystal build greeter.cr ,您会注意到编译后的二进制文件的输出保持不变,但每次重新编译时都是随机的。

关于compile-time - 在编译时运行任意代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com