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

Project1

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

方法中的.new有甚麼作用

 关闭 [复制链接]

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
跳转到指定楼层
1
发表于 2008-3-17 23:05:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
方法中的.new有甚麼作用?
有加.new跟沒加.new又有甚麼差别?

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说

Lv3.寻梦者

酱油的

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

贵宾

2
发表于 2008-3-17 23:15:07 | 只看该作者
方法(method)沒有.new


class.new
加了會調用initialize方法并可以調用內部所有方法
不加會出錯,就是這樣。
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
3
 楼主| 发表于 2008-3-18 19:17:18 | 只看该作者
我的意思是如下:
class HelloWorld
def initialize(myname="Ruby")
  @name=myname
end
def hello
  print "I am a ",@name
end
end
rgss1=HelloWorld.new
rgss2=HelloWorld.new("TERENCE")
rgss1.hello  #->显示I am a Ruby
rgss2.hello  #->显示I am a TERENCE
class HelloWorld
def apple(myname="Ruby")
  @name=myname
end
def hello
  print "I am a ",@name
end
end
rgss1=HelloWorld.apple
rgss2=HelloWorld.apple("TERENCE")
rgss1.hello  #->显示I am a Ruby
rgss2.hello  #->显示I am a TERENCE

这两种显示效果不是都一样吗??
有何差别??

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

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

贵宾

4
发表于 2008-3-18 19:27:54 | 只看该作者
第二段代碼會出錯
class.new.method是一種調用class內方法的固有書寫格式
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
5
 楼主| 发表于 2008-3-18 19:36:05 | 只看该作者
以下引用禾西于2008-3-18 11:27:54的发言:

第二段代碼會出錯
class.new.method是一種調用class內方法的固有書寫格式
以下引用禾西于2008-3-18 11:27:54的发言:

第二段代碼會出錯
class.new.method是一種調用class內方法的固有書寫格式

一定要
rgss1=HelloWorld.new.apple
rgss2=HelloWorld.new.apple("TERENCE")
这样吗??

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

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

贵宾

6
发表于 2008-3-18 19:37:52 | 只看该作者
這兩句就開始出錯了……
rgss1=HelloWorld.apple
rgss2=HelloWorld.apple("TERENCE")

rgss1.hello  #->显示I am a Ruby
rgss2.hello  #->显示I am a TERENCE

這兩句是等於
HelloWorld.apple.hello  #->显示I am a Ruby
HelloWorld.apple("TERENCE").hello  #->显示I am a TERENCE

class.方法.方法是嚴重的語法錯誤
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-18
帖子
1423
7
发表于 2008-3-18 19:41:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
8
 楼主| 发表于 2008-3-18 19:46:09 | 只看该作者

class HelloWorld
def HelloWorld.hello(name)
  print name," said Hello."
end
end
HelloWorld.hello("TERENCE")

HelloWorld.hello("TERENCE")为什么 不加.new就可以显示TERENCE said Hello.??

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

9
发表于 2008-3-18 19:55:52 | 只看该作者
.new是在内存中创建一个类的实例

没有实例 类本身只是空谈
有了实例,类的定义才有了实际意义

当然,静态方法允许在没有实例的情况下被调用
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

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

贵宾

10
发表于 2008-3-18 19:59:20 | 只看该作者
這樣的代碼……
你在外部直接class內部方法會被Ruby自動漠視的。語法就是語法,不是改個假的名字就可以的。

提出反例子之前最好自己試驗一下吧?

PS。wy的解說真是精闢……囧rz
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-13 02:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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