锁定老帖子 主题:Ruby类型转换
精华帖 (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 如果觉得没有说透,或是说得不恰当,欢迎质疑,大家共同探讨。 |
|
返回顶楼 | |
发表时间:2007-01-21
一定要区分名字(变量)和对象。一定要区分编译时和运行时。
静态语言类型是针对变量来的,类型和变量都只存在于编译时。对象在运行时只是内存块,无所谓类型。 动态语言(其实我是说python)名字(变量)、类型、对象都存在于运行时,对象有类型,类型也是对象,而名字(变量)本身无所谓类型,它可以绑定(引用)任意类型的对象。 |
|
返回顶楼 | |
发表时间: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! |
|
返回顶楼 | |