4

eval()和 exec()这类语句存在的意义是什么?

 2 years ago
source link: https://www.v2ex.com/t/815305
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

eval()和 exec()这类语句存在的意义是什么?

  MiketsuSmasher · nukemiko · 6 小时 24 分钟前 · 1439 次点击
13 条回复    2021-11-14 22:22:20 +08:00

ipwx

ipwx   6 小时 2 分钟前

通过可信 dsl 产生程序然后运行吧。。。

ipwx

ipwx   6 小时 1 分钟前

直接字符串拼接然后运行容易被注入,但是你可以自己实现一套简单的编译器,然后编译成 host 语言运行

eason1874

eason1874   5 小时 47 分钟前

写个稍微复杂一点的模板引擎你就知道了

动态输入代码可以提供很高的灵活性

pythonee

pythonee   5 小时 34 分钟前

@ipwx 你是指自举?

Mac

Mac   5 小时 32 分钟前

我用在给客人自定义模版上,内网环境下还是挺好用的

ch2

ch2   5 小时 26 分钟前

用二进制或者脚本创建子进程

ipwx

ipwx   5 小时 19 分钟前

@pythonee 不是自举。

模板引擎、动态执行代码,etc 。

ipwx

ipwx   5 小时 18 分钟前

很多需要繁琐的 if-else factory 设计模式的,用动态代码生成,有时候就很容易解决了。

退一万步,JIT 这东西知道吧?相当于它根据 JVM bytecode 产生了机器码。某种意义上也算是 CPU 的 eval 了。

wanguorui123

wanguorui123   5 小时 0 分钟前

rayhy

rayhy   2 小时 7 分钟前

只要执行的字符串可控还是挺有用的,用来实现一些黑魔法。

djFFFFF

djFFFFF   2 小时 4 分钟前

举个例子,自己写一个 github action ,肯定就要用到 eval ,exec 这些方法

ClericPy

ClericPy   1 小时 8 分钟前

exec 日常模版解析传入 UDF...

eval 的话, 有时候动态传入参数想保留数据类型, 又懒得用 JSON...

GeruzoniAnsasu

GeruzoniAnsasu   59 分钟前

自古以来,程序是程序,数据是数据,程序处理数据但数据不能变成程序的一部分。

eval 打破了这个限制

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK