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

Project1

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

[已经解决] 这两个脚本的写法采取哪个比较好?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1358
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
跳转到指定楼层
1
发表于 2013-1-10 00:55:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
#找出不同的原因
class A
  attr_accessor :b
  @@a = 5
  def initialize(n)
    @b = n
  end
  def a
    return @@a
  end
  def a=(n)
    @@a = n
  end
end
#_运算一________________________________
v1 = A.new("a5")
v2 = A.new("a9")
p v1.a #=>"5"
p v1.b #=>"a5"
p v2.a #=>"5"
p v2.b #=>"a9"
#_运算二_______________________________________
v2.a = "a4"
v2.b = "a8"


p v1.a  #=>"a4"
p v1.b  #=>"a5"
p v2.b  #=>"a8"
p v2.a  #=>"a4"

# 定义类
class B
  attr_accessor :a
  @a = 100
  @@a = 999
  def a2
    return @@a
  end
  def a2=(a2)
    @@a = a2
  end
end

# 生成实例
v1 = B.new
v2 = B.new

# 测试
v1.a = "晕倒"
v2.a = "死撑"

p v1.a # “晕倒”
p v2.a # “死撑”

v1.a2 = "第一个"
v2.a2 = "第二个"

p v1.a2 # "第二个"
p v2.a2 # "第二个"


█问题:这句v2.a2 = "第二个"的解释是修改@@a的值吗?

# 定义类
class B
  attr_accessor :a
  @a = 100
  @@a = 999
  def a2
    return @@a
  end
  def a2=(a2)
    @@a = a2
  end
end

  █问题:为什么这里第二个用a2
  █而下一个用的是a=(n),括号里面的n是一个什么样的数?

class A
  attr_accessor :b
  @@a = 5
  def initialize(n)
    @b = n
  end
  def a
    return @@a
  end
  def a=(n)
    @@a = n
  end
end

Lv3.寻梦者

梦石
0
星屑
1358
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
2
 楼主| 发表于 2013-1-10 00:57:46 | 只看该作者
头大了,DS。指点一下
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
56
在线时间
342 小时
注册时间
2011-10-29
帖子
368
3
发表于 2013-1-11 23:28:37 | 只看该作者
因为a2=》7
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
23 小时
注册时间
2013-1-12
帖子
44
4
发表于 2013-1-12 21:11:35 | 只看该作者
不能理解@@a是個什麼寫法……
求樓主指教。
不過個人來看是算法越簡潔越好,是在功用不變的情況下。

点评

我也不太清楚,不过好像是通用的那样  发表于 2013-1-13 01:39
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
5
发表于 2013-1-14 00:25:33 手机端发表。 | 只看该作者
本帖最后由 zhangbanxian 于 2013-1-14 00:27 编辑

@是实例变量,@@是类变量,在def之外的@其实也是类变量,总之ruby一切都是对象,声明class时其实就产生了一个class对象,而该class的实例对象则是在class#new时才会产生...

评分

参与人数 1星屑 +50 收起 理由
咕噜 + 50 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-28 00:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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