ruby –dump中显示的信息是否在运行时可用?

ruby –dump中显示的信息是否在运行时可用?,第1张

概述在 10 Things You Didn’t Know Ruby Could Do,幻灯片30,詹姆斯爱德华格雷二世提到 ruby -e 'puts { is_this_a_block }' --dump parsetree 哪个产生 ############################################################# Do NOT use this nod 在 10 Things You Didn’t Know Ruby Could Do,幻灯片30,詹姆斯爱德华格雷二世提到

ruby -e 'puts { is_this_a_block }' --dump parsetree

哪个产生

############################################################# Do NOT use this node dump for any purpose other than  #### deBUG and research.  Compatibility is not guaranteed. ############################################################## @ NODE_ScopE (line: 1)# +- nd_tbl: (empty)# +- nd_args:# |   (null node)# +- nd_body:#     @ NODE_ITER (line: 1)#     +- nd_iter:#     |   @ NODE_FCALL (line: 1)#     |   +- nd_mID: :puts#     |   +- nd_args:#     |       (null node)#     +- nd_body:#         @ NODE_ScopE (line: 1)#         +- nd_tbl: (empty)#         +- nd_args:#         |   (null node)#         +- nd_body:#             @ NODE_VCALL (line: 1)#             +- nd_mID: :is_this_a_block

此处输出的信息是否在运行可用?如果是这样,信息是仅仅代表已经写下的代码,还是它还具有已经完成的任何元编程的结果?

解决方法 是的.您可以使用 Ripper gem(包含MRI 1.9开箱即用)为给定的代码字符串生成AST(抽象语法树)(通过Ripper.sexp).但是,由于MRI 1.9中的体系结构更改,一旦您的代码被解析并转换为YARV字节码,原始源和AST都将被丢弃,您将无法再获取此信息.但是,如果您将通过元编程生成的任何代码放入Ripper.sexp中,您可以获得结果的AST.您还可以使用JEG2演讲中显示的一些其他技巧来解析源文件并为其生成AST(尽管任何元编程代码都不会被解析,因为它还不存在). 总结

以上是内存溢出为你收集整理的ruby –dump中显示的信息是否在运行时可用?全部内容,希望文章能够帮你解决ruby –dump中显示的信息是否在运行时可用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1275153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存