查看: 2991|回复: 15

方法中的.new有甚麼作用

  [复制链接]

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
回帖
2623
发表于 2008-3-17 23:05:20 | 显示全部楼层 |阅读模式

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

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

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

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

酱油的

梦石
0
星屑
1840
在线时间
2161 小时
注册时间
2007-12-22
回帖
3216

贵宾

发表于 2008-3-17 23:15:07 | 显示全部楼层
方法(method)沒有.new

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

使用道具 举报

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
回帖
2623
 楼主| 发表于 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专题空间--龙使传说
回复

使用道具 举报

酱油的

梦石
0
星屑
1840
在线时间
2161 小时
注册时间
2007-12-22
回帖
3216

贵宾

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

使用道具 举报

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
回帖
2623
 楼主| 发表于 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专题空间--龙使传说
回复

使用道具 举报

酱油的

梦石
0
星屑
1840
在线时间
2161 小时
注册时间
2007-12-22
回帖
3216

贵宾

发表于 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.方法.方法是嚴重的語法錯誤
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-18
回帖
1385
发表于 2008-3-18 19:41:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
回帖
2623
 楼主| 发表于 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专题空间--龙使传说
回复

使用道具 举报

有事烧纸

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

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

发表于 2008-3-18 19:55:52 | 显示全部楼层
.new是在内存中创建一个类的实例

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

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

使用道具 举报

酱油的

梦石
0
星屑
1840
在线时间
2161 小时
注册时间
2007-12-22
回帖
3216

贵宾

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

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

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

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部