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

Project1

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

[已经解决] 请问下这个"@A=@B=true"是什么意思呢?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
跳转到指定楼层
1
发表于 2022-2-7 04:41:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这种写法我还是第一次遇到...难道就是把类变量@A和类变量@B全都赋值为true的意思嘛?

Lv5.捕梦者

梦石
0
星屑
26303
在线时间
5357 小时
注册时间
2016-3-8
帖子
1655
2
发表于 2022-2-7 09:15:15 | 只看该作者
这种问题有什么好提出的??
自己试一次不就一清二楚了

https://runrb.io/

评分

参与人数 1+1 收起 理由
taeckle + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11711
在线时间
991 小时
注册时间
2019-11-5
帖子
2427

极短24参与

3
发表于 2022-2-7 15:08:35 | 只看该作者
本帖最后由 哇哇哇啊叭叭 于 2022-2-8 10:40 编辑

  

  可以确定地是,@a=@b=true确实能把两个变量同时赋值为真。
  有争议地是,后面@a会不会跟@b同步发生改变。记得以前遇到过这样地事情,但后来核实地时候,又无法复现这类情况了,所以什么时候会同步改变这个尚未确定。
  另外,类变量地大小写有没有严格规定呀?
  

点评

类变量地大小写没有严格规定的  发表于 2022-2-8 15:47

评分

参与人数 1+1 收起 理由
taeckle + 1 多谢指点!

查看全部评分

风继续吹,不忍远离。年少轻狂,眼神明亮,最好的年纪,最好的时光。希望岁月是一场春梦
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
4
发表于 2022-2-8 14:30:39 | 只看该作者
本帖最后由 enghao_lim 于 2022-2-8 15:13 编辑
哇哇哇啊叭叭 发表于 2022-2-7 15:08
可以确定地是,@a=@b=true确实能把两个变量同时赋值为真。
  有争议地是,后面@a会不会跟@b同步发生 ...


不会发生同步改变,基础数据不会执行指针同步,但是对象会。
大小写严格区分,既 @aBcDE 不等于 @Abcde

评分

参与人数 2星屑 +50 +2 收起 理由
RyanBern + 50 + 1 认可答案
taeckle + 1 大神威武!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11711
在线时间
991 小时
注册时间
2019-11-5
帖子
2427

极短24参与

5
发表于 2022-2-8 15:35:05 | 只看该作者

RE: 请问下这个"@A=@B=true"是什么意思呢?

本帖最后由 哇哇哇啊叭叭 于 2022-2-8 10:39 编辑

  
  ruby不是一切皆对象吗?还是这里的对象是某种特指的含义呢?
  最早见到:
  1.   def convert_escape_characters(text)
  2.     result = text.to_s.clone
复制代码

  用克隆,而不直接用赋值的情况。擦测应当是为避免指针同步,将数据源text也一并改掉了。后面发现@xxx=@ooo=xxoo这种情况有时候会导致两变量同步变化。

  但通过这两种例子,无法分辨哪种情况是基础数据,哪种情况是对象:两者要么是局部变量,要么是类变量。或者说,两变量中,存放的对象若是用【.new】创建的,就应是对象?但直觉感觉,ruby里所有东西其实都是.new来的...


  

评分

参与人数 1+1 收起 理由
taeckle + 1 多谢指点!

查看全部评分

风继续吹,不忍远离。年少轻狂,眼神明亮,最好的年纪,最好的时光。希望岁月是一场春梦
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
6
发表于 2022-2-8 20:07:27 | 只看该作者
哇哇哇啊叭叭 发表于 2022-2-8 15:35
ruby不是一切皆对象吗?还是这里的对象是某种特指的含义呢?
  最早见到:

boolean和numeric不是对象,没有所谓的克隆,除非自行指针操作(变量指针而非值本身),不然 a = b = 100,就是赋予同值,是否还有其他基础数据也是雷同我没查过不能确定。

这个吊诡的例子其实可以解释numeric是对象但不是对象……
  1. a = 1
  2. puts 1.object_id == a.object_id   #=> true
复制代码
解释能力有限,大致上可以被理解为只有一个值为1的Numeric被允许存在。

评分

参与人数 1+1 收起 理由
哇哇哇啊叭叭 + 1 竟然有种像谈哲学的感觉

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

7
发表于 2022-2-8 20:45:28 | 只看该作者
本帖最后由 guoxiaomi 于 2022-2-8 20:52 编辑

整数(Fixnum)是立即值:其“地址”并不是封装了一个指针,而是固定值

true是TrueClass的单例,我认为它也是立即值,但是文档里似乎没有提……

点评

感觉好像代码里面要是较真儿的话,没有一个地方没有例外呢  发表于 2022-2-8 21:33

评分

参与人数 3星屑 +50 +3 收起 理由
taeckle + 1 大神威武!
RyanBern + 50 + 1 被醋瞎
哇哇哇啊叭叭 + 1 精品文章

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
8
 楼主| 发表于 2022-2-28 17:25:26 | 只看该作者
enghao_lim 发表于 2022-2-8 14:30
不会发生同步改变,基础数据不会执行指针同步,但是对象会。
大小写严格区分,既 @aBcDE 不等于 @Abcde ...

大神请问下你说的这个对象会发生指针同步是长什么样子的呢?可以给咱举个简单的例子嘛?多谢了!
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
9
发表于 2022-2-28 19:26:37 | 只看该作者
taeckle 发表于 2022-2-28 17:25
大神请问下你说的这个对象会发生指针同步是长什么样子的呢?可以给咱举个简单的例子嘛?多谢了! ...
  1. class IamObj
  2.     attr_accessor:myValue
  3.     @myValue = nil
  4.     def initialize
  5.         @myValue = 10;
  6.     end
  7. end

  8. @a = @b = IamObj.new()

  9. print(@a.myValue)

  10. @b.myValue = 9

  11. print(@a.myValue) #指针同步所以修改@b既等于修改@a。
复制代码

评分

参与人数 1+1 收起 理由
taeckle + 1 大神威武!

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 12:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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