Project1

标题: 请问这里的冒号代表着什么 [打印本页]

作者: 寒凌天    时间: 2020-1-4 17:08
标题: 请问这里的冒号代表着什么
本帖最后由 寒凌天 于 2020-1-4 17:16 编辑

RUBY 代码复制
  1. # マップ画面のシーンクラスです。
  2. class Scene_Map
  3.   alias :main_lsrs1 :main          #请问这个冒号,代表着什么?
  4.   alias :update_lsrs1 :update
  5.  
  6.   # シーンの処理を実行します。
  7.   def main
  8.     @location_sprite = LSRS::Sprite_Location.new($game_map.map_name)
  9.     main_lsrs1
  10.     @location_sprite.dispose
  11.   end
  12.  
  13.   # フレームの更新を行います。
  14.   def update
  15.     update_lsrs1
  16.     @location_sprite.update
  17.   end
  18. end


alias :main_lsrs1 :main          #请问这个冒号,代表着什么?
有的地方是双冒号,请问这些是什么意思,在哪里能不能找到相关语法的介绍?

比如这句:@location_sprite = LSRS::Sprite_Location.new($game_map.map_name)
就是双冒号,什么意思呢?
作者: KB.Driver    时间: 2020-1-5 00:39
冒号开头是符号字面量的生成方式

ruby中,符号(Symbol)是一种不可变(immutable)的对象
感性认识上可以将符号与字符串做对比,例如:main 与 "main"

由于符号的不可变以及相比常量来说用起来方便,在ruby中被大量用作重要内容的“标识”
例如,所有的方法在定义时,就同时保存了一份以方法名为内容的符号
正因如此,符号也可以用来象征同名的方法
在 alias :main_lsrs1 :main 这句中,就是为main起了一个别名main_lsrs1
相当于另外定义了一个方法叫main_lsrs1,做着和main一样的事

至于双冒号::,那是对类(模块)内容的访问操作符,可以类比点.
只不过,点无法访问类里的常量,因此规范上来说,调用类方法用.而读取类常量用::

例如一个类Window_Base,它的内部定义了一个常量WLH,而其他的类想要访问WLH的值
那就要用Window_Base::WLH来告诉解释器,让它到Window_Base里面去找WLH,因为只有那里才有

又假如有一个模块RPG,它的内部定义了一个类叫BaseItem,由于类名是一个常量,
因此在模块外要引用BaseItem就要写RPG::BaseItem,例如生成一个实例 bi = RPG::BaseItem.new

作者: B612    时间: 2020-1-5 07:16
ruby中语法和大多数计算机语言基本相同,双冒号的意义:
1.作用域符号::的前面一般是类名称,后面一般是该类的成员名称。
2.全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分。
3.作用域分解运算符,嘛,通俗一点来说,就是调用一个变量或函数之类的东西。




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