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

Project1

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

[已经解决] 刚开始接触脚本,关于对象初始化的一些问题

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2011-1-20
帖子
5
跳转到指定楼层
1
发表于 2011-1-20 01:18:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2011-1-14
帖子
262
2
发表于 2011-1-20 01:29:13 | 只看该作者
  def TalkAboutYourself2
    self.WhatIsYourName.to_s + self.HowOldAreYou.to_s
  end

这样呢?


赤夜玄魔于2011-1-20 01:34补充以下内容:
如果是调用的话,需要传送两个,而你写的
  1. def initialize(age,name)#这里应该只有一个age
  2.   @age = age
  3. end
  4. def initialize(age,name)#这里应该只有一个name
  5.   @name = name
  6. end
复制代码
而且还有个问题,初始化应该是只能有一个的,不能多。如果想分开来接受的话,可以在初始化那里设置不接受任何一个数据,直接跳转的子类里。方法有很多。

评分

参与人数 1星屑 +332 收起 理由
fux2 + 332 认可答案

查看全部评分

话说,熟人变少了,还是马甲变多了?
我将乘风而去,万丈深渊。新生命阻止我的冲动……好吧,我再活一年,但是……这是最后的一年……
……强烈支持国产游戏……

遵冥冥之意,然果有奇效!
我好像玩够了,该走了……

强烈反对国产脑残动画片在电视台播出……
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2011-1-20
帖子
5
3
 楼主| 发表于 2011-1-20 01:37:27 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2011-1-14
帖子
262
4
发表于 2011-1-20 01:43:15 | 只看该作者
回复 FormatES 的帖子

to_s 就是转成字符串

self 表示父类本身(我记得应该是叫父类吧。)
self 在这里等于是Monster 本身

点评

哦!  发表于 2011-1-21 15:57
否,若在方法内部,self 是调用当前方法的接收者,可理解为实例本身。如 "obj.foo" 这样的调用形式,obj 是接收者,那么 foo 内部的 self 就会指向 obj。   发表于 2011-1-21 12:44
话说,熟人变少了,还是马甲变多了?
我将乘风而去,万丈深渊。新生命阻止我的冲动……好吧,我再活一年,但是……这是最后的一年……
……强烈支持国产游戏……

遵冥冥之意,然果有奇效!
我好像玩够了,该走了……

强烈反对国产脑残动画片在电视台播出……
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2011-1-20
帖子
5
5
 楼主| 发表于 2011-1-20 01:47:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42409
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

6
发表于 2011-1-20 07:01:28 | 只看该作者
本帖最后由 fux2 于 2011-1-20 07:04 编辑

回复 FormatES 的帖子
  1. def TalkAboutYourself2
  2.     p WhatIsYourName,HowOldAreYou
  3. end
复制代码
第二个接受参数数目错误
  1. def initialize(age,name)
  2.   @age = age
  3.   @name = name
  4. end
复制代码
self代表调用方法的对象,Array类的例子:
  1. a = [4,7,6]
  2. def reload
  3.   self.sort!
  4. end
  5. a.reload
  6. p a #=> a=[4,6,7]
复制代码

点评

噢噢,受教.  发表于 2011-1-21 14:13
呵呵,一个术语问题:这里 a 被称为接收者,调用方法的是 Ruby 顶层。可参考:http://bbs.66rpg.com/thread-164725-1-1.html 7楼  发表于 2011-1-21 12:47

评分

参与人数 1星屑 +332 收起 理由
后知后觉 + 332 认可答案

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

7
发表于 2011-1-20 11:26:36 | 只看该作者
initialize 是在生成实例对象执行 .new 的时候自动调用的.
你定义了2次.第一次叫定义.而第2次叫重定义.
实际上是以重定义为准.
所以在站上很多脚本的使用说明里大多数都有说.【把脚本放在MAIN前】
就是因为默认的一些方法被重定义了.
同一个方法被多次定义.是以靠下的为准【脚本从上往下的执行】
  1. class Monster
  2.   def initialize(age,name)
  3.     @age = age
  4.     @name = name
  5.   end
  6.   def WhatIsYourName(flag = false)
  7.     if flag
  8.       return "Hi!我叫" + @name + "。"
  9.     end
  10.     print "Hi!我叫" + @name + "。"
  11.   end
  12.   def HowOldAreYou(flag = false)
  13.     if flag
  14.       return "我今年" + @age + "岁了。"
  15.     end
  16.     print "我今年" + @age + "岁了。"
  17.   end
  18.   def TalkAboutYourself1
  19.     print "Hi!我叫" + @name + ",今年" + @age + "岁了。"
  20.   end
  21.   def TalkAboutYourself2
  22.     p WhatIsYourName(true) + HowOldAreYou(true)
  23.   end
  24. end

  25. #找两个人来做实例(两位小妹妹,蜀黍给你们检查检查身体)
  26. LittleMoon = Monster.new("19","小月月")
  27. SisterFeng = Monster.new("18","凤姐")

  28. #开始表达
  29. LittleMoon.WhatIsYourName
  30. SisterFeng.HowOldAreYou
  31. LittleMoon.TalkAboutYourself1
  32. SisterFeng.TalkAboutYourself2
复制代码

点评

前辈如果有时间帮忙认可一下LS,咱认可不了自己……  发表于 2011-1-21 15:56

评分

参与人数 1星屑 +332 收起 理由
fux2 + 332 认可答案(后知后觉大人如果有时间帮忙认可L.

查看全部评分












你知道得太多了

回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2011-1-20
帖子
5
8
 楼主| 发表于 2011-1-21 11:41:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 16:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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