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

Project1

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

[已经解决] 基础脚本问题求教

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2013-3-29
帖子
8
跳转到指定楼层
1
发表于 2013-4-14 22:56:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 ynhr123y 于 2013-4-15 15:40 编辑

鄙人对基础脚本语言有一部分理解有些困难,请求大神指点迷津!
内容如下:
一:
RMXP的帮助文档中,对 函数 进行了如下解释:数字的计算和字符串的显示等,能够进行某种处理的被命名的功能称为函数。
而且,函数的定义也作了如下解释:函数的定义是从 def 开始到 end 结束。

等到 定义类 的时候,帮助文档中提到:方法的定义,和定义普通函数的情况相同。如果在类定义当中加上 def ~ end 的话,就会自动成为该类的方法。


那么我是不是可以理解为:预定义的类中,我新定义的函数,和我自己新定义的类中新定义的方法,他们是一样的?

二:
对于数组和Hash表中的一个用for循环的例子有些理解困难,内容如下:
数组的循环
使用 for 循环,即使没有设定对象的附加码也能指定数组单元。
  1. a = ["艾力克斯","布莱恩","卡罗来"]

  2. for s in a
  3.   p s
  4. end
复制代码
我想问一下,以s带入数组a中究竟有什么意义呢?帮助文档中的解释我有些看不懂。同时,这段代码又会输出什么呢?进一步说,在实际运用中又可以起到什么功能呢?
同理,Hash表的帮助文档:
  1. a = {3=>6, 4=>10, 5=>15}

  2. for k in a.keys
  3.   p k
  4. end
复制代码
提到了这段,运用了keys的方法获得Hash表的各个主键,这段代码的原理是否和上面的数组代码是一个道理?

三:
帮助文档中的 实变量 部分也有些不懂:
原文:属于个体对象的变量称为实变量。名称以 @ 开头的变量,自动作为实变量使用。局部变量只有在 def ~ end 等结构内部使用时才有效,然而使用实变量的话,只要其对象存在,变量的值就会被保存。实变量一般作为对象的属性来使用。

这里提到的“属于个体对象的变量”中的“属于个体对象”究竟是什么意思呢?
还有,是不是只要以@开头的变量都是实变量?
“只要其对象存在,变量的值就会被保存”又是什么意思?
“实变量一般作为对象的属性来使用”这句话完全不懂

文档中也给了一个例子:
  1. class Person
  2.   def name
  3.     return @name
  4.   end
  5.   def name=(name)
  6.     @name = name
  7.   end
  8.   def hello
  9.     print "我是" + @name + ""
  10.   end
  11. end

  12. alex = Person.new
  13. alex.name = "艾力克斯"
  14. alex.hello                  # => 我是艾力克斯
复制代码
随后单独拿出了这一段代码
  1. def name
  2.     return @name
  3.   end
  4.   def name=(name)
  5.     @name = name
  6.   end

复制代码
并说明了,这一段代码和以下代码是一个意思
  1. attr_accessor :name
复制代码
原帮助文档解释:上面的示例是先准备 @name 实变量,使用 name、name= 方法把对象附加上 @name 实变量作为属性。像这样的方法称为附加属性。附加属性也能更简单的像下面那样编写。

attr_accessor :name这样编写是,自动定义与 : 符号右侧名称相同的实变量对应属性的取得和注解方法。上例中是生成 @name 实变量并附加成为属性。
在预置脚本中 attr_accessor 应用得很多。但在只定义属性的取得方法的情况下,一般使用 attr_reader 代替 attr_accessor。


“自动定义与 : 符号右侧名称相同的实变量对应属性的取得和注解方法”
“只定义属性的取得方法的情况下,一般使用 attr_reader 代替 attr_accessor”

这两段文字也很难理解了

以上就是我的所有问题,感谢好心人能解答,谢谢!

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
2
发表于 2013-4-14 23:24:01 | 只看该作者
1,类名一样,方法名一样,下面的类或方法会覆盖前面的。类名不一样,方法名一样,不会覆盖同方法名不同类名的方法。其它同理
2,输出S的内容就是hash表A中的内容,for就是循环a中的内容,p s  将会依次显示a中的内容。
3,比较不好回答,就请论坛中的大大们来解答吧

可能我解释的不是很对,请楼主 多多包涵
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2012-5-20
帖子
9
3
发表于 2013-4-15 00:40:59 | 只看该作者
人还在吗
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2013-3-29
帖子
8
4
 楼主| 发表于 2013-4-15 10:26:37 | 只看该作者
wwwcctvty 发表于 2013-4-14 23:24
1,类名一样,方法名一样,下面的类或方法会覆盖前面的。类名不一样,方法名一样,不会覆盖同方法名不同类 ...

感谢!!!!第三个问题我再想想
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2013-3-29
帖子
8
5
 楼主| 发表于 2013-4-15 10:27:26 | 只看该作者
sonic12shadow 发表于 2013-4-15 00:40
人还在吗

刚上线,有什么事嘛?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

6
发表于 2013-4-15 10:58:10 | 只看该作者
类的概念和现实世界很接近,比如两个人都同属人类,都是人类这个类的对象,他们都有名字这个属性,但每个人的名字属性具体的值是不一定相同的,但这个名字属性的值一定是针对某个对象的,而不是整个人类,所以名字对于人类这个类来说就是实变量。
  1. class Person
  2.   def initialize
  3.     @name = ""
  4.     @@population += 1
  5.     print "哇~哇~~"
  6.   end
  7.   def name
  8.     return @name
  9.   end
  10.   def name=(n)
  11.     @name = n
  12.   end
  13.   def dispose
  14.     print "啊~~~"
  15.     @@population -= 1
  16.   end
  17.   def self.population
  18.     return @@population
  19.   end
  20. end
复制代码
顺道提一下@@类变量,这个变量是对于整个类而言的,不针对于某个实例。
一个人出生
anew = Person.new  # 调用 initialize 方法,世界人口+1
查看一下世界总人口
print Person.population  # 调用 Person 类的类方法 self.population ,返回类变量 @@population
起个名字
anew.name = "阿尔西斯"   # 调用 name=(n) 方法
问一下这个人叫什么?
print "我的名字叫" + anew.name  # 调用 name 方法
让他去死
anew.dispose  # 调用 dispose 方法,世界人口-1
再查看一下世界人口
print Person.population
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
7
发表于 2013-4-15 11:29:23 | 只看该作者
亿万星辰 发表于 2013-4-15 10:58
类的概念和现实世界很接近,比如两个人都同属人类,都是人类这个类的对象,他们都有名字这个属性,但每个人 ...

{:2_262:} 星辰大大的解释就是精辟、、、、、、、、、{:2_260:} 受教了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2013-3-29
帖子
8
8
 楼主| 发表于 2013-4-15 15:37:46 | 只看该作者
亿万星辰 发表于 2013-4-15 10:58
类的概念和现实世界很接近,比如两个人都同属人类,都是人类这个类的对象,他们都有名字这个属性,但每个人 ...

清楚了许多,感谢版主拨云见日!解答得非常详细
总算搞清楚实变量究竟是个什么东西了,而且@@类变量的相关指点也非常感谢,第一次知道还有这种变量。

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-26 02:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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