查看完整版本: A.1 作业

quzhongwei 2008-6-9 23:05

A.1 作业

为了构造一条可执行语句,我们有如下代码:[code]a = class A
    puts "A"
    def WoW
        puts "WoW"
    end
end[/code]请输出这里 a 的值!

maninred 2008-6-9 23:51

a值为空

quzhongwei 2008-6-9 23:56

我们不要把,nil读作【空】,它不空,它是:NilClass类的实例!
常见的错误没有关系,不过以后不要说nil是空!

drive2me 2008-6-9 23:58

哈,有趣的作业。
考概念呢。

他们习惯了,其实就当做Nil就可以了,不必非要翻成中文的。

wjpp0000 2008-6-10 22:10

第一句是入口点

libaoming 2008-6-11 08:45

a = nil

mztest 2008-6-13 10:15

我有一个疑问:
在IRB下写完代码后
A
=>nil
(分别是什么意思?)
可是当我用:
puts a
nil
=>nil
新人新问题。

libaoming 2008-6-13 14:22

=>nil 这是irb返回的,用来提示交互完毕。

mztest 2008-6-13 15:55

那返回的“A"不是a的值吗?
为什么
puts a 却返回nil?

libaoming 2008-6-13 16:11

你看puts "A" 它是打印出字符A而已 它并不返回值
然后定义了方法 WoW,然而呢 也没调用啊 所以可以忽略
既然整个下来都没有什么返回值,就只好返回nil

gongmeihao 2008-6-13 17:07

:( 继续学习中:(

龍崎 2008-6-14 12:14

提问:
是不是这个意思:
因为
a=class A
put "A"
def  WoW
puts  "WoW"
end
end

最后有两个end,说明 在声明classA的时候,也把他赋值给a了,然后,接下来的

put "A"
def  WoW
puts  "WoW"
end

只是class中的方法?
put "A"  #是打印出一个字符串“A”,对吧?但是他没有return值,WoW方法也没走,所以就
是nil?
另外在ruby中null以nil代替?

neohsiao 2008-6-16 00:21

我有个问题请问:
怎么在类里面调用方法呢?是不是不可以?
如果调用了,有返回值应该是返回的什么?难道是方法的return?

libaoming 2008-6-16 08:49

只要实例类的对象 如:X.new
然后就可以调用了
返回值就要看你的需要了
所以方法都有返回值,即使省略return也是可以的

neohsiao 2008-6-16 10:54

self表示调用当前的类
那么[code]a=class A
puts  "A"
def WoW
puts "WoW"
end
self.WoW
end[/code]这样为什么不行?是不是方法一定要实例化才能调用?或者说怎样在类里面就调用类里面的方法?

yangli2005 2008-6-26 13:18

问个完全外行的问题 写完执行句语以后要如何执行啊... 才能返回 a=nil

cjq_999 2008-6-26 20:14

我认为是先把A这个空对象赋值给a,然后A被定义了,而a还是空的
如果想a不是为空,需要在外面赋值:a=A
class Object
    puts "A"
    def WoW
        puts "WoW"
    end
end

a=A
这个时候a就等于A了

quzhongwei 2008-6-29 00:26

[quote]原帖由 [i]neohsiao[/i] 于 2008-6-16 10:54 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=16942&ptid=5088][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
self表示调用当前的类
那么a=class A
puts  "A"
def WoW
puts "WoW"
end
self.WoW
end这样为什么不行?是不是方法一定要实例化才能调用?或者说怎样在类里面就调用类里面的方法? [/quote]
现代程序设计,实例是必须的,并且就是你的实例.(我们总得面向对象啊,至于以后的设计,等你呢)

liuxueming 2008-6-30 17:41

新手

我还是不太懂这段代码有什麽用,仅仅是为了执行 class A中的puts 语句吗?对a来说没
有什么用啊。

hawke 2008-7-30 18:32

正在向前爬...

HmilyChen 2008-8-5 01:21

a 应该为NULL 在第一条语句a=class A 后,a就再也没被赋值,而Class A 为NULL,所以a也为NULL 不知这样理解对不?

arron 2008-9-15 11:45

[quote]原帖由 [i]cjq_999[/i] 于 2008-6-26 20:14 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=17352&ptid=5088][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
我认为是先把A这个空对象赋值给a,然后A被定义了,而a还是空的
如果想a不是为空,需要在外面赋值:a=A
class Object
    puts "A"
    def WoW
        puts "WoW"
    end
end

a=A
这个时候a就等于A了 [/quote]

我试过 是这样的!

karon_flame 2008-11-4 11:22

[quote]原帖由 [i]neohsiao[/i] 于 2008-6-16 10:54 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=16942&ptid=5088][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
self表示调用当前的类
那么a=class A
puts  "A"
def WoW
puts "WoW"
end
self.WoW
end这样为什么不行?是不是方法一定要实例化才能调用?或者说怎样在类里面就调用类里面的方法? [/quote]

你定义的实例方法WoW,然后用调用类方法的方式self.WoW来调用是不可以的

这样写[code]  1 #!/usr/bin/ruby
  2 #puts "hello,Ruby"
  3 #def foo
  4 # puts "hello,world"
  5 #end
  6 class A
  7   def self.WoW
  8     puts "WoW"
  9   end
10   self.WoW
11 end[/code]

karon_flame 2008-11-4 12:10

[quote]原帖由 [i]liuxueming[/i] 于 2008-6-30 17:41 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=17467&ptid=5088][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
我还是不太懂这段代码有什麽用,仅仅是为了执行 class A中的puts 语句吗?对a来说没
有什么用啊。 [/quote]

这个问题是要这样的
看看下面两个例子[code]a = class A
  7   def self.WoW
  8     puts "WoW"
  9   end
10   self.WoW
11 end
12
13 puts a.class[/code]输出是NilClass.是个对象哦[code]a = class A
  7   def self.WoW
  8     puts "WoW"
  9   end
10   self.WoW
11 end
12
13 puts a.class.class[/code]这表明NilClass是Class类的一个实例..

这说明ruby里面一切都是对象.....连对象都是某个对象的实例

下个这个例子大概可以说明问题[code]1 #!/usr/bin/ruby
  2
  3 #重载Class类
  4 class Class
  5       alias oldNew  new
  6       def  new(*args)
  7       print "Creating a new ", self.name, "\n"
  8       oldNew(*args)
  9       end
10
11 end
12
13 #定义1个新的类(这里仅仅是声明,不会产生输入)
14
15 class A
16   def WoW
17     puts 'wow'
18   end
19 end
20
21 #实例化A类10次,每次实例化A类,都会产生一个nilclass实例,nilclass是class类的一个实例,所以产生了10次输出.
22 for i in (1..10)
23 A.new
24 end[/code]总之,一切都是对象,类本身也是某个对象的实例

[[i] 本帖最后由 karon_flame 于 2008-11-4 12:20 编辑 [/i]]

langwangff 2008-11-4 23:02

self  是Object类
页: [1]
查看完整版本: A.1 作业