Project1

标题: 请问语句前面加@符合代表什么 [打印本页]

作者: c1003700862    时间: 2019-3-8 08:25
标题: 请问语句前面加@符合代表什么
  @sprite1.bitmap = RPG::Cache.title("Title-Words.png")
    @sprite1.x = 112
    @sprite1.y = 36
    @sprite2 = Sprite.new
    @sprite2.bitmap = RPG::Cache.title("Title-Subwords.png")
    @sprite2.x = 128
    @sprite2.y = 96
    @sprite3 = Sprite.new
    @sprite3.bitmap = @sprite1.bitmap         
    @sprite3.x = 240
    @sprite3.y = 36
    @sprite4 =Sprite.new
    @sprite4.bitmap = @sprite2.bitmap
    @sprite4.x = 256
    @sprite4.y = 96
    @sprite1.opacity = 0
    @sprite2.opacity = 0
    @sprite3.opacity = 0
    @sprite4.opacity = 0
作者: KB.Driver    时间: 2019-3-8 10:22
本帖最后由 KB.Driver 于 2019-3-8 11:09 编辑

@sprite1代表这是一个实例变量。
另外,两个@开头的例如@@xxx则是类变量。

运行时,实例变量不属于类,由类的对象持有。
类变量则由类本身持有,任何实例访问的类变量都是同一个。
作者: ppspssss    时间: 2019-3-8 10:59
本帖最后由 ppspssss 于 2019-3-8 11:18 编辑

局部變量<错  , 实變量 ,     以后以少生成多東西就用他了
作者: KB.Driver    时间: 2019-3-8 11:05
ppspssss 发表于 2019-3-8 10:59
局部變量,     以后以少生成多東西就用他了
局部變量,     以后以少生成多東西就用他了

不带你这么误导的,自己查一下不好吗。
作者: RaidenInfinity    时间: 2019-3-8 11:24
https://rpg.blue/thread-398047-1-1.html

章节 2.3。读。
作者: c1003700862    时间: 2019-3-9 09:54
还不懂哦 不过。。。。谢谢大佬了
作者: 灯笼菜刀王    时间: 2019-3-9 10:27
本帖最后由 灯笼菜刀王 于 2019-3-9 10:38 编辑
c1003700862 发表于 2019-3-9 09:54
还不懂哦 不过。。。。谢谢大佬了


名词意思不理解那就用硬记的, 知道它是用来干嘛的就好了, 以后用多了就慢慢能理解帮助文件上的那些名词了

加@的变量, 名字是"实变量" , 它的官方解释在 F1, 脚本入门,基础部分的最后一章, 它是可以在一个类的内部使用的变量

栗子:  
class 圣斗士
  @天马 = 星矢
end  

这表示, 在圣斗士这一个类里, 实变量天马就是星矢, 不会是其他人了, 不管你定义青铜, 还是白银, @天马就是星矢, 除非你重新赋值, @天马 = 卡西欧士, 这样实变量天马才会换人

但是, 在别的类, 比如 class 海贼王,  你在这里用 @天马, 人家就不认识了, 它只限于 圣斗士的内部识别

需要注意的是, 实变量还有个特点, 它是以实际对象为准, 而不是以这个类为准
比如, 教皇 = 圣斗士.new,  雅典娜 = 圣斗士.new,  分别让教皇和雅典娜都带一队圣斗士,  这个时候, @天马就是他们自己分别赋值的, 双方互不影响。  教皇.天马 =卡西欧士, 这个时候教皇这队的圣斗士, @天马就是卡西欧士了,   而 雅典娜.天马 一样是星矢

明白了吧, 不明白就自己用火影去试试
作者: 芯☆淡茹水    时间: 2019-3-9 13:20
一个类就好比 一个国家 吧。
国家里每个省就比作 每个方法 吧。
带@的实例变量, 就差不多相当于 身份证 。
身份证在全国(类)所有省份(方法)通用,可以获取身份证信息(读取),也到公安局修改身份证信息(重新赋值)。
然而 身份证 到了国外,就不能使用了。
但是可以办签证啊,比如在国内(实例变量所在的类里)先办签证:
attr_reader   :身份证
或者
def 身份证
  return @身份证
end
这样在国外就能获取到你的身份信息。

也可以国内授权给国外更改身份信息(现实中有没有就不知道哈),比如:
attr_writer :身份证
或者
def 身份证=(身份证)
   @身份证 = 身份证
end

唔~,虽然不是太贴切,但好歹还是比较形象的。
作者: c1003700862    时间: 2019-3-9 17:44
谢谢。。。。。




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