幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1743|回复: 5

[RMVX] @要怎么理解啊

[复制链接]

4

主题

29

帖子

321

积分

④见习

积分
321
发表于 2007-6-15 14:43:45 | 显示全部楼层 |阅读模式
class Person
  def name
    return @name
  end
  def name=(name)
    @name = name
  end
  def hello
    print "我是" + @name + ""
  end
end

alex = Person.new
alex.name = "艾力克斯"
alex.hello            

定义了一个叫Person的类,然后在里面定义了3个方法,然后是Person类里又建了个叫alex的实例
alex调用它父类的方法name,同时把"艾力克斯"带过去....
@name是什么意思啊
还有name=(name)这个也可以做函数名吗,我晕啊,完全看不懂 [s:6]
回复

使用道具 举报

1

主题

6

帖子

66

积分

②入门

积分
66
发表于 2007-6-15 16:46:24 | 显示全部楼层
@name就是用来保存名字的变量吧

def name=(name)
也是函数

alex.name = "艾力克斯"
=后面的就是参数
回复 支持 反对

使用道具 举报

50

主题

1235

帖子

1万

积分

⑧专业

C语言最高

积分
12447
发表于 2007-6-15 17:34:02 | 显示全部楼层
@的是变量。
$是全局变量
FUKIDASHI这样的是常量。
def name=(name)
是定义一个“name=”的方法
@name=name这个是重点,后面调用是这样的alex.name=“埃里克斯”
等于是汪@name这个变量中代入了“埃里克斯”这个值。
所以最后用hello方法输出的时候,就会把@name所含的值输出,“我是埃里克斯”

lz所看的那部分代码其实就是附加属性方法的原理~ruby提供了简约的写法~就是attr_accessor:
如果是attr_read就是只读属性。

class Person      #建立person类
  def name           #定义一个方法name
    return @name    #这个方法的内容是返回一个@name的值
  end                       #结束
  def name=(name) #定义一个name=的方法,(name)是参数
    @name = name#这个方法的内容是把name的值代入@name
  end                      #结束
  def hello             #定义一个hello方法
    print "我是" + @name + ""#这个方法的内容是输出“"我是"+@name的值+""”
  end                       #结束
end                      #person类的结束

alex = Person.new         #建立一个person类的实例,代入alex
alex.name = "艾力克斯"#代入后,调用name方法,将"艾力克斯"代入@name,得到返回值。
alex.hello                        #调用hello方法,输出。
我的blog~:http://hi.baidu.com/soaryou/blog
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2007-6-15 19:54:35 | 显示全部楼层
@在类里面用……在别的类就不能用

实变量例子:

@foobar

以“@”开头的变量就是实变量,属于特定的对象。实变量可以在其类或子类的方法中引用。引用尚未初始化的实变量其值为 nil。

F1里就是这么说的 [s:4]
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

50

主题

1235

帖子

1万

积分

⑧专业

C语言最高

积分
12447
发表于 2007-6-15 20:03:36 | 显示全部楼层
NND,我打少一个字。。准确说@是“类”变量。。该类以外使用不能。
我的blog~:http://hi.baidu.com/soaryou/blog
回复 支持 反对

使用道具 举报

89

主题

2333

帖子

3273万

积分

⑧专业

Xavier on Rails

积分
32739794
QQ
发表于 2007-6-19 19:23:09 | 显示全部楼层
纠正一个错误
@是实例变量
@@才是类变量

实例变量是说这个类的每个实例里的该变量的值可以是不一样的
类变量是说所有实例里面该变量的值是统一的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-22 19:45 , Processed in 0.015125 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表