python - 将字符串编译为 Ruby 字节码以获得更好的性能——就像 Python 中的 compile()

标签 python ruby compilation eval

我有一个字符串(已验证、受信任等),其中包含旨在在 Ruby 循环中快速运行的源代码。在 Python 中,我会将字符串编译成抽象语法树,然后再将其编译为 eval()exec():

# Python 3 example
given_code = 'n % 2 == 1'
pred = compile(given_code, '<given>', 'eval')
print("Passed:", [n for n in range(10) if eval(pred)])    
# Outputs: Passing members: [1, 3, 5, 7, 9]

Ruby 没有编译功能,那么最好的实现方式是什么?

最佳答案

基于jhs的解决方案,但直接使用lambda作为循环体(&在lambda上调用to_proc并将其作为 block 传递给select函数).

given_code = 'n % 2 == 1'
pred = eval "lambda { |n| #{given_code} }"
p all = (1..10).select(&pred)

关于python - 将字符串编译为 Ruby 字节码以获得更好的性能——就像 Python 中的 compile(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900327/

相关文章:

python - 无法将列表中的值写入 csv python

Python Pandas 数据框 : Find last occurrence of value less-than-or-equal-to current row

ruby - AzureRM 应用程序网关 Rest API

java - Java有交互式解释器吗?

c - 为什么不能在编译时确定堆栈的大小?

python - Django - 如果单击按钮,如何执行 if 语句

javascript - python selenium 检查 javascript 警报/弹出窗口是否打开

ruby - 如何通过多字段对ruby中的数组进行排序

ruby-on-rails - RubyMine 无法识别 Rails 应用程序

java - 在另一个 void 函数中传递一个私有(private) void 函数(编译错误 java)