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

Project1

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

ruby问题.def 方法名=()

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

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

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-19
帖子
44
2
 楼主| 发表于 2007-12-19 05:44:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人

剑·法

梦石
0
星屑
55
在线时间
12 小时
注册时间
2006-8-31
帖子
1015
3
发表于 2007-12-19 06:55:08 | 只看该作者
lx两位殿下有讨论,不献丑了。{/hx}
复活?复活!XD
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2005-11-29
帖子
141
4
发表于 2007-12-19 07:06:42 | 只看该作者
楼主可以把“方法名=”整体的看成是一个方法名。

另外
def motherland=(value)
return @motherland =value
end

在Ruby中可以用 attr_writer:motherland 代替。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

5
发表于 2007-12-19 07:22:20 | 只看该作者
郁闷——
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2005-11-29
帖子
141
6
发表于 2007-12-19 07:33:46 | 只看该作者
以下引用美兽于2007-12-18 23:22:20的发言:


以下引用bbschat于2007-12-18 23:06:42的发言:

给对象属性赋值的方法。
可以用 attr_writer:对象属性名 代替

实际attr_writer:与def 方法名=(***)
有很多区别。


是我没说清楚,在楼主的例子里2者是等价的。
当然 def 里面可以写更多东西。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

7
发表于 2007-12-19 07:36:38 | 只看该作者
郁闷——
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2005-11-29
帖子
141
8
发表于 2007-12-19 07:41:51 | 只看该作者
以下引用美兽于2007-12-18 23:36:38的发言:

呵呵,我的意思并非是定义内容,

而是访问顺序,权限和继承的一些区别。


有吗?我倒不知道,请教一下美兽,具体的区别是啥?{/fd}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

9
发表于 2007-12-19 08:27:49 | 只看该作者
有吗?我倒不知道,请教一下美兽,具体的区别是啥?


如何说呢?
attr实际定义的是个读写属性,而非类的属性。
而def a=定义的是个虚拟属性,但他可以真的当作类的属性来使用。

具体


class S1
   attr_reader :name
end

class S2
   def name=(n)
       @name = n
   end  
end

s1 = S1.new
s1.name = 10        #出错
s2 = S2.new
s2.name = 10        #正常



系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2005-11-29
帖子
141
10
发表于 2007-12-19 08:36:10 | 只看该作者
以下引用美兽于2007-12-19 0:27:49的发言:


具体


class S1
  attr_reader :name
end

class S2
  def name=(n)
      @name = n
  end  
end

s1 = S1.new
s1.name = 10        #出错
s2 = S2.new
s2.name = 10        #正常


attr_reader 是只读属性,不能在类外面赋值。
你例子里使用 attr_writer 是不会出错的。

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-21 12:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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