Project1

标题: 脚本中 $ 和 @ 的分别 [打印本页]

作者: gevolution90    时间: 2008-7-24 00:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-7-24 00:14
@的属于内部变量,不能在函数外面调用。
$为全局变量,可以在任意的地方调用。
作者: gevolution90    时间: 2008-7-24 00:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: 八云紫    时间: 2008-7-24 00:54
@开头的变量,可以在定义的类中调用。 在类未创建的时候, @的变量没被创建,所以

就不能读写了

$为全局变量,可以在任意的地方调用。
作者: 精灵使者    时间: 2008-7-24 00:54
全局变量例子:

$foobar

以“$”开头的变量就是全局变量,程序的任何地方都能引用(因此应用时要特别注意)。全局变量没有必要事先声明。引用尚未初始化的全局变量其值为 nil。

实变量例子:

@foobar

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

局部变量例子:

foobar

以小写字母或“_”开头的标识符就是局部变量或方法调用。

在局部变量作用域(类、模块、方法定义的部分)中小写字母开头的标识符要初始赋值,这个赋值属于局部变量的声明。引用未声明的标识符会当作无参数的方法调用。

参考f1 [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: gevolution90    时间: 2008-7-24 00:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: dbshy    时间: 2008-7-24 00:55
以下引用gevolution90于2008-7-23 16:48:48的发言:

但 @ 的可以读,但不可以写,为什么?


可以写

作者: 八云紫    时间: 2008-7-24 00:57
attr_accessor(name ... )
为 name 属性定义读取和写入的方法。name 可以是 Symbol 或字符串。

以此方法定义的方法的定义如下。

def name
  @name
end
def name=(val)
  @name = val
end

attr_reader(name ... )
定义 name 属性的读取方法。name 可以是 Symbol 或字符串。

以此方法定义的方法的定义如下。

def name
  @name
end

attr_writer(name ... )
定义 name 属性的写入方法(name=)。name 可以是 Symbol 或字符串。

[LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: dbshy    时间: 2008-7-24 00:57
attr_reader   该成 attr_accessor [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: gevolution90    时间: 2008-7-24 01:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: 八云紫    时间: 2008-7-24 01:00
以下引用gevolution90于2008-7-23 17:00:08的发言:

明白了,attr_accessor  attr_reader  attr_writer
这三个有关吧,一个是可读可写,一个是只读,一个是只写,是吗?


是的
作者: gevolution90    时间: 2008-7-24 01:02
提示: 作者被禁止或删除 内容自动屏蔽




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