Javascript可以实现面向对象,但Ruby不能实现函数式编程?
问题描述:
即时通讯新的“真正的”Javascript:ing我知道更多的函数式编程。Javascript可以实现面向对象,但Ruby不能实现函数式编程?
看来,在Javascript中,你可以从两个世界中获得最好的功能和面向对象编程。
但是在Ruby中,您没有头等函数(函数作为数据类型)。
这是否意味着Javascript支持两全其美,而Ruby仅支持面向对象的编程风格?
答
红宝石确实有一流的功能。是什么让你觉得它不? 维基百科:具有一流的功能的语言是其中:
该语言支持的程序的执行过程中构建新的功能,将它们存储在数据结构中,将它们作为其他函数的参数,并将它们作为其他函数的值返回。
你可能挂了这样的事实:Ruby的特效/ Lambda表达式需要通过call()
被调用,但这不会对他们的影响firstclassness。 Common Lisp lambdas也被调用funcall
以及我不记得任何人声称Common Lisp没有头等功能。
答
功能性编码与功能性语言编码有区别。 Ruby可能没有很多功能语言的功能,但是如果你学会了功能性的思考,你会找到方法来使用Ruby来达到这个目的。
真正重要的是范式 - 您用于构建解决方案的思维过程。函数式语言可用于编写过程式代码(就像OO语言一样),但如果您了解不同的范例,则可以应用最适合您的方案的方法。
如果你到书,我很喜欢“Real World Functional Programming”(与飞碟双向先生合着)
(我不确定我是否会称JavaScript为“两全其美”......) – 2010-09-26 15:04:31
-1用于讨论ruby,而对语言没有丝毫的线索。 – glebm 2010-09-26 16:24:39
匿名函数不是一种功能性语言。 – NullUserException 2010-09-26 17:29:36