Project1

标题: 学脚本时遇到的问题 [打印本页]

作者: 114133542    时间: 2008-3-26 17:20
标题: 学脚本时遇到的问题
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                   |
[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 暴风の龙    时间: 2008-3-26 17:23
def name=(name)         |   
   @name = name        |  主要就时这个地方看不懂  两个name到底有什 不一样   
end                   |

没什么不一样……
第一个name是这个定义的名称 第二个是变量
作者: dbshy    时间: 2008-3-26 17:25
alex = Person.new
就是生成一个Person类的实例叫alex
这个实例可以调用在Person类中定义的方法
alex.name = "艾力克斯"
让alex这个实例执行name=(name)这个方法
就是将"艾力克斯"代入@name
最后让alex执行hello这个方法
输出 我是艾力克斯
作者: snakeqx    时间: 2008-3-26 18:18
def name=(name)         |   
   @name = name        |  主要就时这个地方看不懂  两个name到底有什 不一样   
end

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

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

这样解释懂得了么?

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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1