Project1

标题: VA系统文言文式脚本求注解(1)。 [打印本页]

作者: alianlord    时间: 2020-4-16 11:02
标题: VA系统文言文式脚本求注解(1)。
#==============================================================================
# ■ Game_BattlerBase
#------------------------------------------------------------------------------
#  管理战斗者的类。主要含有能力值计算的方法。Game_Battler 类的父类。
#==============================================================================

class Game_BattlerBase

……
#--------------------------------------------------------------------------
  # ● 清除能力的增加值
  #--------------------------------------------------------------------------
  def clear_param_plus
    @param_plus = [0] * 8
  end
……
我的理解是,@param_plus = [0] * 8  ==> @param_plus = {[0],[0],[0],[0],[0],[0],[0],[0]}
或是
@param_plus = {param_plus(0)=[],
                         param_plus(1)=[],
                        param_plus(2)=[],
                         param_plus(3)=[],
                         param_plus(4)=[],
                         param_plus(5)=[],
                         param_plus(6)=[],
                         param_plus(7)=[]}
那一种理解是正确的?还是另有答案。
作者: Cupidk爱呗茶    时间: 2020-4-16 11:10
测试了一下是这样的哦 大概意思就是从数组的0到第7位元素全部赋值0

作者: alianlord    时间: 2020-4-16 11:24
Cupidk爱呗茶 发表于 2020-4-16 11:10
测试了一下是这样的哦 大概意思就是从数组的0到第7位元素全部赋值0

看到了明确的答案,完全不知道是代表什么意义。一种能力的plus只能限于8种之内吗?我的天。
作者: Cupidk爱呗茶    时间: 2020-4-16 11:32
alianlord 发表于 2020-4-16 11:24
看到了明确的答案,完全不知道是代表什么意义。一种能力的plus只能限于8种之内吗?我的天。 ...


想了一下感觉刚才的解释确实有点模糊了 大概是这样的【

[2,3,4] * 2 → [2,3,4,2,3,4]
作者: Cupidk爱呗茶    时间: 2020-4-16 11:46
alianlord 发表于 2020-4-16 11:24
看到了明确的答案,完全不知道是代表什么意义。一种能力的plus只能限于8种之内吗?我的天。 ...

嗯差不多是这样的刚才看了一下大概就是对应了这八种能力


作者: alianlord    时间: 2020-4-16 11:46
Cupidk爱呗茶 发表于 2020-4-16 11:32
想了一下感觉刚才的解释确实有点模糊了 大概是这样的【

[2,3,4] * 2 → [2,3,4,2,3,4] ...

以你举的例子,@param_plus = [0] * 8 ==> [0,0,0,0,0,0,0,0]
但你试验的结果是。{ [0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]}
对不上?
作者: alianlord    时间: 2020-4-16 12:04
alianlord 发表于 2020-4-16 11:46
以你举的例子,@param_plus = [0] * 8 ==> [0,0,0,0,0,0,0,0]
但你试验的结果是。{ [0,0,0,0,0,0,0,0],[0 ...

原来如此。谢谢。
作者: alianlord    时间: 2020-4-16 12:15
alianlord 发表于 2020-4-16 12:04
原来如此。谢谢。

@buffs = Array.new(8) { 0 } 这个……
再讨教一下。是否是。@buffs =[{ 0 },{ 0 },{ 0 },{ 0 },{ 0 },{ 0 },{ 0 },{ 0 }]
作者: alianlord    时间: 2020-4-16 12:28
alianlord 发表于 2020-4-16 12:15
@buffs = Array.new(8) { 0 } 这个……
再讨教一下。是否是。@buffs =[{ 0 },{ 0 },{ 0 },{ 0 },{ 0 },{ ...

@buffs =[{  },{  },{  },{  },{  },{  },{  },{  }]
我翻书的推测,{}中应该不是0,而是8个空的哈希{}。
作者: alianlord    时间: 2020-4-16 12:43
alianlord 发表于 2020-4-16 12:15
@buffs = Array.new(8) { 0 } 这个……
再讨教一下。是否是。@buffs =[{ 0 },{ 0 },{ 0 },{ 0 },{ 0 },{ ...

原来我一直被表象迷惑了。
作者: MCCF    时间: 2020-4-16 14:11
本帖最后由 MCCF 于 2020-4-16 14:15 编辑

文章所有代码都未经测试,有爱自取
数组存哈希是可以的,但是{}只是RGSS特有的Hash简写。它一般来说是表示一个Block(块)。如:
  1. Array.new(size) {|index| ... }
复制代码
这是F1文档中的标准语法。可以把Block理解为类似于函数的东西:index为参数,...是执行的内容。不同的是{}语法的Block不能使用return,而会取块中最后一个结果作为返回值。
回到Array本身,这个语法的意思是,创建一个有size个元素的数组,每创建一个元素就调用块(传入当前元素的下标作为参数,从0开始计数)。并用返回值作为这个位置上的值。
如下实例:
  1. Array.new(10) {|index| index + 1 } # => [1,2,3,4,5,6,7,8,9,10]
复制代码
至于Array.new(size) { value }这个语法就更容易产生误解……不过这也是块的思想,value实际上是这个块的返回值,比如:
  1. Array.new(10) { 1 } # => [1,1,1,1,1,1,1,1,1,1]
复制代码
想要[{},{},{},{},{}]这样的东西?看看这个:
  1. Array.new(5){{}}
复制代码
顺便……如果想要防止歧义,可以用do-end块。这种语法是可以用return的,不过也可以不用。
  1. Array.new(10) do |index|
  2.   index * 2
  3. end
复制代码
结果为:[0,2,4,6,8,10,12,14,16,18]
作者: alianlord    时间: 2020-4-16 14:42
MCCF 发表于 2020-4-16 14:11
文章所有代码都未经测试,有爱自取
数组存哈希是可以的,但是{}只是RGSS特有的Hash简写。它一般来说是表示 ...

这下概念就容易理解多了。
作者: KB.Driver    时间: 2020-4-16 20:45
11楼说的对,楼主先分清楚块与哈希字面量的区别。
块必定是接在方法的后面,因为块的作用实际上是作为方法调用的参数。
而哈希字面量生成的是一个哈希对象。

再说块与哈希字面量的语法完全不一样啊。
块的语法:
无参数 { expression }
带参数 {|args| expression }

哈希字面量:
{}
{ key1 => value1, key2 => value2 }
{ sym1: value1, sym2: value2 }

最后,楼主产生这种疑惑的根本原因是ruby支持运算符重载。
而ruby核心库就实现了一些运算符,这些运算符操作的结果都应当作为特例记忆。
有时间的话自己翻翻核心库手册看看这些方法。(更快的方法是实际运行一遍)
"string" * 3  # String :*
"a" << 98 # String :<<
[0] * 8 # Array :*
[1, 2, 2] - [2] # Array :-
[1] << 2 # Array :<<

作者: zyf722    时间: 2020-4-16 21:15
看到标题还以为有人实现了VA里的wenyan-lang

ruby中的array -> python中的list
ruby中的hash -> python中的dict

也许可以这么理解?




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