论坛首页 编程语言技术论坛

ruby on rails为什么暂时无法成为企业应用开发的主流?

浏览 84956 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-09-18  
我没有看过  Ruby 的源代码,不过可以猜想 模块和 类的主要差别:

类可以生成实例对象,实例对象有单独的对象 id,实例对象有单独的存储区。

我进一步想象,呵呵:把类退化成模块,就需要去除对象 id 。允许原来单独存储的实例对象数据被合并到其他类的实例对象中。
0 请登录后投票
   发表时间:2006-09-18  
mixin不一定代表多重继承啊。一个类可以什么都不继承而被另一个模块mixin从而简单复用,当然你可以说任何类都继承自Object。。。

module只代表namespace罢了,相当于package,为什么要把class退化过去?
0 请登录后投票
   发表时间:2006-09-18  
类无法被 mixin, 把类退化为模块,是为了能够被 mixin.

你没有明白我的意思。
0 请登录后投票
   发表时间:2006-09-18  
一个关于rails的初级问题:
rails的魔板和jsp很像。不知道能否做到freemarker的macro功能?觉得不能重用显示逻辑还是不太爽的。
0 请登录后投票
   发表时间:2006-09-18  
potian 写道

在Ruby中,Object、Class和Module是三个特殊的类。它们的创建过程被分为两个步骤,而不是象其它类一样一步到位。首先,Ruby建立这3个类的继承关系,但是并没有创建它们的metaclass,形成下图的情形,这个时候还没有符合类的关系,以及它们的metaclass必须符合的规则:

这首先解决了一个问题,就是说Class是一个Module,而Module是一个Object,所以说Class是一个Object,因此,所有的数据都是Object。


------------------

rails template 应该可以用 helper 类达到taglib这样的重用的效果。
helper类的写法,可能不如freemarker macro简单。也许可以自己创造个Ruby DSL as Macro.
0 请登录后投票
   发表时间:2006-09-18  
ajoo 写道
一个关于rails的初级问题:
rails的魔板和jsp很像。不知道能否做到freemarker的macro功能?觉得不能重用显示逻辑还是不太爽的。

partial template?
0 请登录后投票
   发表时间:2006-09-18  
uncutstone 写道
类无法被 mixin, 把类退化为模块,是为了能够被 mixin.

你没有明白我的意思。

你说的是Ruby么?
0 请登录后投票
   发表时间:2006-09-18  
gigix 写道
uncutstone 写道
类无法被 mixin, 把类退化为模块,是为了能够被 mixin.

你没有明白我的意思。

你说的是Ruby么?


对啊。 是我对 Ruby 发展的一种猜想。mixin 一个退化的类意思是: 在一个类已经从另一个类继承的情况下,需要引入又一个类的功能。 举例来说, 男人从人继承,同时又想扮演 manager 的角色, 这里涉及到三个类。

按照传统的做法,manager 通常作为一个实例变量放到 man  类中。 man 类成为manager 的delegator.但是这样需要很多的 delegate 方法,很不方便。

我的想法是让manager 类可以通过某种语言机制退化为模块,从而可以
class Person
end

class Manager
end

module_degrade Manager  # imaginary

class Man < Person
   include Manager
end

0 请登录后投票
   发表时间:2006-09-18  
uncutstone 写道
我没有看过  Ruby 的源代码,不过可以猜想 模块和 类的主要差别:

类可以生成实例对象,实例对象有单独的对象 id,实例对象有单独的存储区。

我进一步想象,呵呵:把类退化成模块,就需要去除对象 id 。允许原来单独存储的实例对象数据被合并到其他类的实例对象中。


你说的这个我没有看明白。在我看来没有那么些复杂的事,所谓的对象,无非就是一组函数加上一个暗含的self;所谓的模块,无非就是假设了一个self但自己没有提供;所谓的mixin,无非就是把一个函数塞进另一个self的环境里面。
你要是习惯了JavaScript,就不会有那么多条条框框的想法了。什么“正统面向对象”,面向对象还有一支叫prototype-based oo呢。
0 请登录后投票
   发表时间:2006-09-18  
请看我对前贴的改动。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics