Project1
标题:
请教实例变量(以@开头)与全局变量(以$开头)之间的转换
[打印本页]
作者:
taeckle
时间:
2021-9-5 23:14
标题:
请教实例变量(以@开头)与全局变量(以$开头)之间的转换
本帖最后由 taeckle 于 2021-9-5 23:21 编辑
我在
class Game_System
里最开头就定义了一个实例变量(比如就叫bianliang_1, attr_accessor : bianliang_1),然后在 class Game_System的def initialize里初始化这个实例变量(比如就把这个变量的值设定为1: @bianliang_1=1), 请问下为何就能
在游戏的所有其他class里
用个全局变量"
$game_system.bianliang_1
"来调用这个实例变量了呢?咱明明定义的是一个
以@开头的实例变量
,咋就成了
以$开头的全局变量
了呢?具体代码长这样:
class Game_System
attr_accessor : bianliang_1
def initialize
@bianliang_1=1
end
end
复制代码
还请大家指点一二,多谢了!
作者:
enghao_lim
时间:
2021-9-5 23:30
attr_accessor : bianliang_1
复制代码
attr_accessor将该变量赋予了公开读写。
所以Game_System的任何对象都可以使用.bianliang_1来读写。
举例:
test = Game_System.new()
p test.bianliang_1 #=> 1
复制代码
为何是全局,因为对象是全局变量:
$game_system = Game_System.new()
复制代码
全局变量的是$game_system,不是@bianliang_1。既然已经设置@bianliang_1为公开读写,那先通过全局变量的$game_system读取对象公开的变量bianliang_1当然没有问题。
作者:
alexncf125
时间:
2021-9-5 23:37
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1