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

Project1

 找回密码
 注册会员
搜索
楼主: mxymxy
打印 上一主题 下一主题

[已经解决] 【整理】RGSS3教程大家写整理所得打印版---长一点会有人看吗

[复制链接]

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

11
发表于 2014-1-19 09:09:21 | 只看该作者
本帖最后由 taroxd 于 2014-1-19 09:10 编辑
无脑之人 发表于 2014-1-5 21:12
关于&&和||
&&和||的确不是单纯的数学上的逻辑与逻辑或,而是短路运算:
a && b #=> a ? b : a


Array.new(100,54)没有问题,不然这个方法就没有存在意义了=。=
同一个54有什么问题?你还能不改object_id,把一个54改成53不成?

Note that the second argument populates the array with references to the same object. Therefore, it is only recommended in cases when you need to instantiate arrays with natively immutable objects such as Symbols, numbers, true or false.

To create an array with separate objects a block can be passed instead. This method is safe to use with mutable objects such as hashes, strings or other arrays:
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1165
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

12
发表于 2014-1-19 11:19:21 | 只看该作者
taroxd 发表于 2014-1-19 09:09
Array.new(100,54)没有问题,不然这个方法就没有存在意义了=。=
同一个54有什么问题?你还能不改object_i ...

这里可以来仔细讨论一下这种尴尬:

a = 3
b = a

那么,b=a是说把a的值赋予a。因此任意改变a和b的值,b不会改变。

a = 5
b #=> 3
a #=> 5

请考虑使用Array之类的实例(除Fixnum、Symbol以外的实例)。

a = [1, 2, 3, 4]
b = a

b[1] = 9
b #=> [1, 9, 3, 4]
a #=> [1, 9, 3, 4]

b的修改,影响到了a。事实上,在Ruby中,在C语言的层面上,所有的类型都是VALUE类型。所谓的VALUE类型,可以看做一个指针,可以根据需要转换为特定的指针。

这里,a=[1,2,3,4],用C语言的观点来看,就是a是指向这个数组的指针,把a的值赋给b,这就是让a和b指向同一个数组。因此,通过b[1]来修改目的数组,虽然a的值没有发生变化,但是他们所指之物的内容却发生了变化。

在Ruby中,Fixnum(立即数)和Symbol(符号),是作为值嵌入进VALUE里面的。所以他们是真正的“值”,而不是“指针”。

我想,这个尴尬就解释清楚了。

PS. 说Ruby中没有指针的同学,你还没有理解Ruby。Ruby中没有显式地指针,但是像Array之类的实例都是以指针的形式存在的。

ref:
http://axgle.github.io/rhg/chapter02.html

点评

Ruby默认是鼓励无副作用的对象的,也就是说按松本行弘鼓励的方式来的话,有没有指针是不重要的……不过依然受教了。  发表于 2014-1-20 09:55

评分

参与人数 2星屑 +92 收起 理由
taroxd + 7 同坐等蓄势待发
喵呜喵5 + 85 受教,坐等蓄势待发

查看全部评分


See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21594
在线时间
9409 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

13
发表于 2014-1-19 11:34:48 | 只看该作者
DeathKing 发表于 2014-1-19 11:19
这里可以来仔细讨论一下这种尴尬:

a = 3

请问如何在赋值数组的时候避免出现这种尴尬的情况?用clone吗?

点评

或者b=a,然后b=b.first(1)+[9]+b.drop(2),那么a不变……但是这么写依然很不方便……目测需要b=a然后b变a不变的场合很少吧……数组本身不是持久数据结构...  发表于 2014-1-21 10:06
目前看来是这样的。  发表于 2014-1-19 14:21
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
14
发表于 2014-1-19 13:14:45 | 只看该作者
@taroxd @DeathKing @喵呜喵5 【code功能真是尼玛死】
  1. a = Array.new(100,54)
  2. p a[0].object_id,a[1].object_id
复制代码
我想说的只有这个而已,至于除了Fixnum和symbol以外的那些就显得很正常了,除了FixnumSymbol以外其他的按引用传递是很正常的事情
如果想要其他对象按值传递就得使用dup或者clone了  

点评

如果你硬要说是指针………………ruby中没有指针这个概念吧……  发表于 2014-2-8 21:15
没否定你这个,只是说这样没有任何问题  发表于 2014-1-19 16:05
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1165
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

15
发表于 2014-1-19 14:32:31 | 只看该作者
无脑之人 发表于 2014-1-19 13:14
@taroxd @DeathKing @喵呜喵5 【code功能真是尼玛死】我想说的只有这个而已,至于除了Fixnum和symbol以外的 ...

没有否定你的观点,只是希望把问题说得更详细。实际上,如果理解了我提供的那个ref里面的讲解,你会明了许多。

不过你可以在任何时候观察一下54的obejct_id,你会发现它是固定的。我提供的ref里面有详细的解释,但需要深刻理解的话就得具有一些C语言的知识。

a = "string"
b = "string"
p a.object_id, b.object_id

虽然,两者内容一样,但是object_id不一样(顺便说一下object_id就是变量的实际值),是因为Ruby每次都是新生成的字符串。

Ruby按值调用的语义是精确的(不存在什么按引用调用,那是假象)。


SEE in RHG,
小的整数
因为在Ruby中,所有数据都是对象,所以,整数也是对象。然而,存在许多不同的整数实例, 把它们表示为结构体会冒减慢执行速度的的风险。比如说,从0递增到50000,仅仅如此就创建50000个对象, 这让我们感到犹豫。

这就是为什么在ruby中——某种程度上——小的整数要特殊对待,直接嵌入到VALUE中。 “小”意味着有符号整数,可以存放在sizeof(VALUE)*8-1位中。换句话说,在32位机器上, 整数有1位用于符号,30位用于整数部分。在这个范围内的整数都属于Fixnum类,其它的整数属于Bignum类

点评

刚才试了好像做不到,也许是和你说的一样,另外用C++比较多对C不是太了解【看那个东西感觉蛋疼死了,还是class方便】  发表于 2014-1-19 15:17
好吧看样子我有些事情搞错了,以前看过一个网页说Array.new产生的里面的每一个项都是完全相同,改变了一个就也会改变另一个(包括立即值)  发表于 2014-1-19 15:13

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
214 小时
注册时间
2014-1-23
帖子
197
16
发表于 2014-2-8 00:12:16 | 只看该作者
真心赞了,好东西啊好东西……
反正对于我这种纠结于事件和脚本之间的二货相当有用= =
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60804
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

17
发表于 2014-2-8 00:30:38 | 只看该作者
没事用tex排干啥……

推荐同步出 mobi 和 epub 版。你要知道 pdf 在电子书上就是个灾难。
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
200
在线时间
120 小时
注册时间
2007-8-17
帖子
147
18
发表于 2014-2-8 02:37:51 | 只看该作者
好东西,但是一定要严谨啊
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6643
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

19
发表于 2014-2-8 18:19:10 | 只看该作者
恩…………ruby就是ruby 无所谓指针和值吧…………
不然所有的对象岂不都是一个指针?
@DeathKing @无脑之人 @taroxd @喵呜喵5
RUBY 代码复制
  1. class Wo_TMD_Shi_Yi_Ge_Lei
  2.   attr_accessor :ins
  3.   def initialize
  4.     [url=home.php?mod=space&uid=77065]@ins[/url] = 0
  5.   end
  6. end
  7.  
  8. a = Wo_TMD_Shi_Yi_Ge_Lei.new
  9. b = a
  10. b.ins = 100
  11. p a.ins
  12. #=> 100

点评

new当然返回指针啦【2333  发表于 2014-2-8 21:08
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2013-2-16
帖子
29
20
发表于 2014-2-8 18:25:37 | 只看该作者
呀,下来学习一下。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-7 13:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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