作者godfat (godfat 真常)
看板Ruby
标题Re: [连结] 松本行弘: Code 的世界~成为超级程式设 …
时间Mon Jul 27 21:52:27 2009
※ 引述《Schelfaniel (Schelfaniel)》之铭言:
: 没想到 godfat 是物件导向信仰者 @@
不是的话,就不会选 ruby 了喔
: Common Lisp Macro : ( 这是取自网页 )
: (defmacro square-sum2 (x y)
: (let ((first (gensym "FIRST-"))
: (second (gensym "SECOND-"))
: (sum (gensym "SUM-")))
: `(let* ((,first ,x)
: (,second ,y)
: (,sum (+ ,first ,second)))
: (* ,sum ,sum))))
有需要这麽复杂吗..? 试了一下,这样也行:
(defmacro square-sum2 (x y)
(let ((sum (gensym "SUM-")))
`(let* ((,sum (+ ,x ,y)))
(* ,sum ,sum))))
甚至连 sum 也拿掉也行:
(defmacro square-sum2 (x y)
`(let* ((sum (+ ,x ,y)))
(* sum sum)))
我是不是搞错什麽?还是例子太简单所以看不出来?
: 不过 Common Lisp 可以自订 Reader Macro,也就是说
下略,看不太懂 @@
我的疑问是,反正 ruby 有 eval, 这样有什麽做不出来吗?
def sum_square2 x, y
eval "a = #{x} + #{y}; a * a"
end
这跟上面的 lisp 有何不同?
--
#!/usr/bin/env ruby [露比] /Programming (Kn|N)ight/ 看板《Ruby》
# if a
dog nailed
extra legs that
http://webptt.com/cn.aspx?n=bbs/Ruby/index.html
#
walks like an octopus, and Welcome ~
Ruby@ptt~
#
talks like an octopus, then
◢█◣ http://www.ruby-lang.org/
# we are happy to treat it as
█ http://www.ruby-doc.org/
# if it were
an octopus.
◥ ◤ http://www.rubyforge.org/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18