查看: 1905|回复: 3

学脚本时遇到的问题

  [复制链接]
梦石
0
星屑
90
在线时间
2 小时
注册时间
2008-1-20
回帖
7
发表于 2008-3-26 17:20:41 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
class Person        定义一个新类
  def name         定义一个新函数name
    return @name    函数内容是@name实变量
  end
  def name=(name)                 name=(name)什么意思?
    @name = name                    @name = name什么意思?
  end
  def hello                     定义一个方法hello   
    print "我是" + @name + ""
  end
end

alex = Person.new
alex.name = "艾力克斯"
alex.hello                  # => 我是艾力克斯

上面的示例是先准备 @name 实变量,使用 name、name= 方法把对象附加上 @name 实变量作为属性。像这样的方法称为附加属性。

这是我在看脚本基础时遇到的问题虽然有解释但时还时弄不明白




def name=(name)         |   
    @name = name        |  主要就时这个地方看不懂  两个name到底有什 不一样   
  end                   |

版务信息:本贴由楼主自主结贴~
新人

邪恶小龙包

梦石
0
星屑
55
在线时间
17 小时
注册时间
2006-5-22
回帖
6832

第2届短篇游戏比赛冠军第3届短篇游戏大赛小游戏及其他组冠军RMVX自由创作大赛冠军

发表于 2008-3-26 17:23:59 | 显示全部楼层
def name=(name)         |   
   @name = name        |  主要就时这个地方看不懂  两个name到底有什 不一样   
end                   |

没什么不一样……
第一个name是这个定义的名称 第二个是变量
虚无  堕落
回复

使用道具 举报

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
回帖
2059
发表于 2008-3-26 17:25:31 | 显示全部楼层
alex = Person.new
就是生成一个Person类的实例叫alex
这个实例可以调用在Person类中定义的方法
alex.name = "艾力克斯"
让alex这个实例执行name=(name)这个方法
就是将"艾力克斯"代入@name
最后让alex执行hello这个方法
输出 我是艾力克斯
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复

使用道具 举报

梦石
0
星屑
55
在线时间
1 小时
注册时间
2008-2-3
回帖
15
发表于 2008-3-26 18:18:20 | 显示全部楼层
def name=(name)         |   
   @name = name        |  主要就时这个地方看不懂  两个name到底有什 不一样   
end

这里只需要高清楚什么是什么就行了。
稍微改一下。
def M_name=(name)
   @name=name
end

m_name 是一个方法的名字
name 是一个临时的变量,是方法m_name的参数,也就是传给这个方法的信息,在使用完之后内存就被释放掉。
@name 是一个实例变量,只要person这个对象(object)存在,他就一直呆在内村里。

这样解释懂得了么?

我写代码一直把方法用m_开头,这样我就知道什么是变量,什么是方法。程序的可读性就好点。
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部