A.5 例子—辨析——说明
查看( 108 ) /
评论( 10 )
TAG:
-
libaoming发布于2008-06-14 09:24:08
-
class A初解析
class A
a= 111 #局部变量,范围在class A中
def aa
a #class A的局部变量a,在此已无效,一但使用即有NameError错
end
def aa=(aa)
a = aa #如 a = 1,也就意味着此方法中又有了个a的同名变量,作用域在此方法中
puts a end
#aa 使用就有NameError
#aa(1) 没有此方法,
#aa=(1) 或 aa = 1 或 aa=1 都正确
end
-
libaoming发布于2008-06-14 10:01:03
-
class B初解析
class B
@a = 111
def a
@a
end
def a=(bb)
@a = bb
end
def aa
@a
end
def aaa
puts @a
end
#aaa NameError错
#B.new.aaa 实例变量要由实例来调用,此时@a=nil,因为没赋值
end
b = B.new
puts b.a #输出nil
b.a=1 #赋值1
puts b.a #输出1
puts b.aaa #输出1,因为是实例并没改变
c = B.new
puts c.aa #输出nil
-
libaoming发布于2008-06-14 10:02:01
-
期待,讲师给出,更精准的解析
up~~
-
dong123qwe
发布于2008-06-14 17:50:00
-
看完了,也在期待更新。
有吸引
-
wosmvp发布于2008-06-14 18:52:40
-
libaoming说的好像有错误吧…… :)
以这个为例吧
class A
a= 111 #局部变量,范围在class A中
def aa
a #class A的局部变量a,在此已无效,一但使用即有NameError错
end
def aa=(aa)
a = aa #如 a = 1,也就意味着此方法中又有了个a的同名变量,作用域在此方法中
puts a end
#aa 使用就有NameError
#aa(1) 没有此方法,
#aa=(1) 或 aa = 1 或 aa=1 都正确
end
最后调用aa为没有该方法
aa(1)也为没有该方法
aa=1呢,也不是调用的方法,只是 赋值aa为1
如果要调用方法的话
A.new.aa 为NameError
A.new.aa(1)为错误的参数
A.new.aa=1 为调用方法。以1为参数
-
libaoming发布于2008-06-16 08:34:52
-
"A.new.aa(1)为错误的参数" 在类外调用当然是报错误的参数错了,但我说的是在类中使用的情况 它就报 "undefined method"错了
我说的是类中使用(没说调用)
而你说的情况是在类外调用,当然报的错不一样了。
-
5swords发布于2008-06-17 08:59:46
-
谢谢, 例子很好, 从例子看来
1. 局部变量在class级一点用处没有, 根本不应该出现.
它只能而且应该在方法里使用. 而只有实例变量才可以被方法访问到.
2. 实例方法不能在类里调用, 只有类方法可以.
-
toawinner47发布于2008-08-23 02:03:31
-
请问行首绿色竖线和行号怎么挵出来的,代码是什么?
[ 本帖最后由 toawinner47 于 2008-8-24 00:53 编辑 ]
-
grrrr6670发布于2008-10-14 15:23:25
-
我来学习的。期待正解
-
feelsky发布于2008-10-16 16:17:14
-
好,加油!

标题搜索
日历
|
|||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | |||||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | |||
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | |||
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | |||
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | |||
| 30 | |||||||||
我的存档
数据统计
- 访问量: 44
- 日志数: 19
- 建立时间: 2008-06-11
- 更新时间: 2008-06-11


