设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1038|回复: 6
打印 上一主题 下一主题

脚本问题 关于变量的疑问

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-5-12
帖子
7
跳转到指定楼层
1
发表于 2008-5-14 16:12:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
今天看完有关变量与常量的教程后感觉很疑惑
据我理解变量分4种
第一种为 局部变量 只能在 方法类中使用
第二种为 在方法 中 定义的变量 以@开头的
第三种为 在方法 外 定义的变量 以@@开头
第四种为 以$开头的 全局变量 可在所有类中调用

疑问~~~~~~~
一、第二种变量与第三种有何区别?
二、变量与常量的关系?
三、A_CONSTANT为什么没加$算是全局变量,它到底是变量还是常量?

A_CONSTANT=100
class Constant_Test_1
ANOTHER_CONSTANT=50
def initialize
print ANOTHER_CONSTANT
print A_CONSTANT
end
end



例子 第一种
class Local_Variable
def method_1
   local_variable=2
end
def method_2
   local_variable=3
end
end
     第二种
lass Instance_Variable
def method_1
   @instance_variable=2
end
def method_2
   @instance_variable=4
end
end
     第三种
class Class_Variable
@@class_variable=0
def initialize
   @@class_variable+=1
end
end
     第四种
class Global_Variable_1
def initialize
   $global_variable=0
end
end
class Global_Variable_2
def initialize
   $global_variable+=1
end
end
扒走,扒走.......

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

2
发表于 2008-5-14 16:45:28 | 只看该作者
1.你自己不是說出來了嗎?
2.定值與不定值的關係...(其實就是會不會占用內存位置的分別)
3.A_CONSTANT以大寫開頭,當然是常量啊!怎麼會是全局變量?(敲。)
提問之前先爬爬置頂帖子是習慣,給你引用兩個references
http://rpg.blue/viewthread.php?tid=81167
http://rpg.blue/viewthread.php?tid=84430
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

3
发表于 2008-5-14 18:44:00 | 只看该作者
一、第二种变量与第三种有何区别?
@@ 其实是类变量   就是这个类的静态变量,这个变量在所有类中共享
class Val
  @@static_v = 0
  def initialize
    @@static_v += 1
  end
  def pstatic
    p @@static_v
  end
end
a = Val.new
a.pstatic
b = Val.new
a.pstatic
b.pstatic
二、变量与常量的关系?
常量就是不可变的量
三、A_CONSTANT为什么没加$算是全局变量,它到底是变量还是常量?
A_CONSTANT 其实是局部变量  只是他是在一开始就生成的, 所以它的作用域是全局的,
正好和$效果一样罢了
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

4
发表于 2008-5-14 19:03:07 | 只看该作者
順道我也問一下好了...
其實@ 與 @@ 究竟有啥分別,兩者都可以在方法當中定義、修改...
(除第一個能在方法外初定義,不過實際上也沒有甚麽用,常量更好)

不會好寫來以備萬一吧?==
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

5
发表于 2008-5-14 21:04:06 | 只看该作者
@@ 是在同一个类的所有实例中可以共享的变量, 也就是@@变量在同一个类的所有实例中,值都是一样的, 同一个类的所有实例都引用来之同一个地方的变量
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

6
发表于 2008-5-14 21:06:26 | 只看该作者
原來如此....
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-5-12
帖子
7
7
 楼主| 发表于 2008-5-14 23:33:12 | 只看该作者
明白了
谢谢指点 ~{/cy}
扒走,扒走.......
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-27 20:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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