File tree Expand file tree Collapse file tree 2 files changed +2
-2
lines changed Expand file tree Collapse file tree 2 files changed +2
-2
lines changed Original file line number Diff line number Diff line change @@ -392,7 +392,7 @@ <h2 id="eval">eval</h2>
392392< p > 关于< code > eval</ code > 方法,苏小脉给出了下面的建议:</ p >
393393< blockquote >
394394< p > 一般来说,能避免< code > eval</ code > 就尽量避免,因为< code > eval</ code > 有额外的“分析时”开销(将字符串作为源代码进行词法、文法分析),而这个“剖析时”却又是在程序“运行时”进行的。把不需要惰性求值的表达式预先进行及早求值,能避免一些分析时开销。如果可能的话,用< code > instance_exec</ code > ,或< code > instance_eval</ code > 带块的形式,也比直接在字符串上求值好。</ p >
395- < p > ——苏小脉在< a href ="http://bbs .66rpg.com/thread-165322-1-1.html " target ="_blank "> 如果用这种方式来构造一些复杂的对象呢?</ a > 上的发言</ p >
395+ < p > ——苏小脉在< a href ="http://rm .66rpg.com/thread-165322-1-1.html " target ="_blank "> 如果用这种方式来构造一些复杂的对象呢?</ a > 上的发言</ p >
396396</ blockquote >
397397< p > 而关于< code > eval</ code > 方法的安全性漏洞,Dave Thomas在他的著作Programming Ruby(< a href ="http://www.rubycentral.com/pickaxe/taint.html " target ="_blank "> 英文页面</ a > )中列举了一个十分有趣的例子:</ p >
398398< blockquote >
Original file line number Diff line number Diff line change @@ -190,7 +190,7 @@ puts eval("str + ' Rubyist'") # => "Hello Rubyist"
190190
191191> 一般来说,能避免` eval ` 就尽量避免,因为` eval ` 有额外的“分析时”开销(将字符串作为源代码进行词法、文法分析),而这个“剖析时”却又是在程序“运行时”进行的。把不需要惰性求值的表达式预先进行及早求值,能避免一些分析时开销。如果可能的话,用` instance_exec ` ,或` instance_eval ` 带块的形式,也比直接在字符串上求值好。
192192>
193- > ——苏小脉在[ 如果用这种方式来构造一些复杂的对象呢?] ( http://bbs .66rpg.com/thread-165322-1-1.html ) 上的发言
193+ > ——苏小脉在[ 如果用这种方式来构造一些复杂的对象呢?] ( http://rm .66rpg.com/thread-165322-1-1.html ) 上的发言
194194
195195 而关于` eval ` 方法的安全性漏洞,Dave Thomas在他的著作Programming Ruby([ 英文页面] ( http://www.rubycentral.com/pickaxe/taint.html ) )中列举了一个十分有趣的例子:
196196
You can’t perform that action at this time.
0 commit comments