Project1

标题: 【整理】RGSS3教程大家写整理所得打印版---长一点会有人看吗 [打印本页]

作者: mxymxy    时间: 2014-1-4 20:27
标题: 【整理】RGSS3教程大家写整理所得打印版---长一点会有人看吗
本帖最后由 mxymxy 于 2014-1-17 22:24 编辑

名义上是更新了,实际上仅仅是改了下bug而已。求大神续写助攻!求主编不弃坑!

---------------------------------------------------------------

那个RGSS3教程大家写,我把它简单整理了一下,发上来了。
因原作者较多无法一一联系,儒又排版问题及特殊需求请直接站内信本人或在本帖回复,我会力争解决的……
@harinlen 主编有何意见?(还活着吗?)

---------------------------------------------------------------

入门教程大家写V1.1.pdf (735.08 KB, 下载次数: 4204)


作者: 柯南推理谜    时间: 2014-1-5 11:29
好厉害的教程~~~为何没人顶?
作者: taroxd    时间: 2014-1-5 13:26
本帖最后由 taroxd 于 2014-1-5 13:49 编辑

第21页对 &&、||的介绍有点问题吧,比如说||并不是只要有一个为真就是真,而是
a || b 中,若abu不为nil或false则返回a(不计算b的值),否则返回b。

虽然后面给的例子有提到 0 || 1 && true  的结果是0,但是在一开始说明的时候没有说清楚这一点

不然会无法理解Game_Variables中
RUBY 代码复制
  1. def [](variable_id)
  2.     @data[variable_id] || 0
  3.   end



第34页对rand说明有误,应为接受一个参数n,返回一个0~n-1的随机整数
诡异的是下面的例子又是对的……

42页例子的第2行,六六、七七没加引号
神奇的是第5行依然是正确的

第42页:除此以外哈希表与数组没有任何区别
你TM在逗我!!!
作者: mxymxy    时间: 2014-1-5 18:26
taroxd 发表于 2014-1-5 13:26
第21页对 &&、||的介绍有点问题吧,比如说||并不是只要有一个为真就是真,而是
a || b 中,若abu不为nil或 ...

太感谢你了!我还以为除了我以外没人会看完它……

21页:这个是主编大人写的,不是我写的。我想不出什么方法改正确了还能让新人很明白,只好加一个例子……我先注明有异议,大不了之后的教程再具体说明是什么问题。
34页受教了。
42页:我直接复制粘贴的没注意……抱歉……
后面那个我实在不知道该怎么说了,于是保留原话……

好吧其实误导新人是不对的,我下一版一定改……
(如果还有下一版的话……)
作者: 无脑之人    时间: 2014-1-5 21:12
关于&&和||
&&和||的确不是单纯的数学上的逻辑与逻辑或,而是短路运算:
a && b #=> a ? b : a
a || b #=> a ? a : b
但是,他们都是从左到右运算,即便右侧有N的N次方个括号
也就是说:
0 || (1 && (1 && 1) && (233 || ("101010" || 5) && 8 || nil) && false) #...
事实上也只有0被运行了而已
这一点在C++这类语言上也经常理解错误【并往往产生激烈(而无用)的讨论】,希望能够点明
--------------------------------抓虫的分割线----------------------------------
27页第13行不是;而是:
case值得注意的一点是,下面的语句往往得不到预期的效果:
  1. case "aaa".class
  2. when String
  3.   #...
  4. when Numeric
  5.   #...
  6. end
复制代码
很值得点明呢【嗯在下曾经被坑过你懂得】
39页的Array.new(100,54)有个很微妙的细节,那就是这100个54是同一个值
42页的哈希表要说明的是,Ruby1.9以后Hash保留插入时的顺序
46页说的元编程是指instance_variables_set/get么………………- -b
53页的rescue要注意不加参数只能捕捉StandardError而非所有异常,如果想那么做请用Exception或者Object【- -b】……
-----------------------------------
卖萌完毕
作者: 国产吃货    时间: 2014-1-6 00:05
啊我勒个去,本打算给写个目录的,结果刚写到9....就软件错误,直接退出去了
我是不是要把这个魂淡阅读器卸了
作者: sirenke    时间: 2014-1-7 22:16
爱死了
作者: Raukar    时间: 2014-1-11 00:11
下了就要顶啊好东西啊...{:2_275:}{:2_275:}{:2_275:}
作者: 白衣仙卿    时间: 2014-1-12 21:52
受教了,感谢
作者: DeathKing    时间: 2014-1-16 23:25
这种东西为毛要用LaTeX排???????????????????
作者: taroxd    时间: 2014-1-19 09:09
本帖最后由 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:

作者: DeathKing    时间: 2014-1-19 11:19
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
作者: 喵呜喵5    时间: 2014-1-19 11:34
DeathKing 发表于 2014-1-19 11:19
这里可以来仔细讨论一下这种尴尬:

a = 3

请问如何在赋值数组的时候避免出现这种尴尬的情况?用clone吗?
作者: 无脑之人    时间: 2014-1-19 13:14
@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了  
作者: DeathKing    时间: 2014-1-19 14:32
无脑之人 发表于 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类

作者: zshuser    时间: 2014-2-8 00:12
真心赞了,好东西啊好东西……
反正对于我这种纠结于事件和脚本之间的二货相当有用= =
作者: orzfly    时间: 2014-2-8 00:30
没事用tex排干啥……

推荐同步出 mobi 和 epub 版。你要知道 pdf 在电子书上就是个灾难。
作者: 千昭    时间: 2014-2-8 02:37
好东西,但是一定要严谨啊
作者: 余烬之中    时间: 2014-2-8 18:19
恩…………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

作者: 诺粞    时间: 2014-2-8 18:25
呀,下来学习一下。。
作者: taroxd    时间: 2014-2-8 18:36
本帖最后由 taroxd 于 2014-2-8 19:00 编辑
余烬之中 发表于 2014-2-8 18:19
恩…………ruby就是ruby 无所谓指针和值吧…………
不然所有的对象岂不都是一个指针?
@DeathKing @无脑之 ...


前面是在说这个问题

RUBY 代码复制
  1. a = Array.new(5, Array.new)
  2. a[0][0] = 1
  3. p a   # => [[1], [1], [1], [1], [1]]

RUBY 代码复制
  1. a = Array.new(5) { Array.new }
  2. a[0][0] = 1
  3. p a   # => [[1], [], [], [], []]


这里貌似指针和值什么的无所谓,只要在上面那种情况传进去的参数是不可变的就行了。
感觉Ruby里面指针什么的确实不重要呢。
作者: 余烬之中    时间: 2014-2-8 19:03
taroxd 发表于 2014-2-8 18:36
前面是在说这个问题

做一个代换
RUBY 代码复制
  1. # a = Array.new(5, Array.new)
  2. a = Array.new(5)
  3. a[0] = a[1] = a[2] = a[3] = a[4] = Array.new

RUBY 代码复制
  1. # a = Array.new(5) { Array.new }
  2. a = Array.new(5)
  3. a[0] = Array.new
  4. a[1] = Array.new
  5. a[2] = Array.new
  6. a[3] = Array.new
  7. a[4] = Array.new

作者: dxz1234    时间: 2014-3-3 19:47
顶一个,顶顶顶
作者: 阿竹天    时间: 2016-1-9 20:04
非常感谢,已下载~~~
作者: 在世幽灵    时间: 2016-1-19 17:52
谢谢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1