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

Ruby类型转换

浏览 13134 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-19  
引用

弱类型不是这个意思吧,下面是搜到的:
引用

静态类型定义语言
一种在编译时,数据类型是固定的语言。大多数静态类型定义语言强制这一点,它要求你在使用所有变量之前要声明它们的数据类型。Java和C是静态类型定义语言。
动态类型定义语言
一种在执行期间才去发现数据类型的语言,与静态类型定义相反。VBScript和Python是动态类型定义的,因为它们是在第一次给一个变量赋值的时候找出它的类型的。
强类型定义语言
一种总是强制类型定义的语言。Java和Python是强制类型定义的。如果你有一个整数,如果不显示地进行转换,你不能将其视为一个字符串(在本章后面会有更多如何去做的内容)。
弱类型定义语言
一种类型可以被忽略的语言,与强类型定义相反。VBScript是弱类型定义的。在VBScript中,可以将字符串 '12' 和整数 3 进行连接得到字符串 '123',然后可以把它看成整数 123,而不需要显示转换。


请阅读http://www.iteye.com/post/206660
如果觉得没有说透,或是说得不恰当,欢迎质疑,大家共同探讨。
0 请登录后投票
   发表时间:2007-01-21  
一定要区分名字(变量)和对象。一定要区分编译时和运行时。
静态语言类型是针对变量来的,类型和变量都只存在于编译时。对象在运行时只是内存块,无所谓类型。
动态语言(其实我是说python)名字(变量)、类型、对象都存在于运行时,对象有类型,类型也是对象,而名字(变量)本身无所谓类型,它可以绑定(引用)任意类型的对象。
0 请登录后投票
   发表时间:2007-01-24  
pilipala 写道
grantren 写道
只有对于强类型的语言,才有必要作类型转换。
对于动态语言,没必要作类型转换的动作。

这句话有问题

强类型相对于弱类型,
动态语言相对于静态语言,
ruby是动态语言但是同时也是强类型语言。

不过,答案应该没错,是由于动态语言。
我理解 子类要转换成父类通常是为了实现延迟绑定,但是在动态语言中根本不需要用这种方法来实现。

特别是在ruby中, 只要都实现了相关方法,不需要继承自同一父类,也可以实现延迟绑定。

至于楼主说的情况,不太清楚需求是什么,为什么要这么做?



当时使者样的情况

class Gaol<ActiveRecord::Base ; end
class DodingGoal < Goal; end
class CompletedGoal < Goal ;end


使用单表继承代表正在做的目标跟完成的目标

然后可能需要在两个类型中进行转换
比如
d_goal = DodingGoal.new
d_goal.complate! #这个时候我希望返回一个CompletedGoal实例对象

当然完成的目标也需要改变状态,

c_goal = CompletedGoal.find(1)
c_goal.doing!
0 请登录后投票
论坛首页 编程语言技术版

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