Project1

标题: 刚刚写了个小脚本,这里测试一下 [打印本页]

作者: taroxd    时间: 2014-8-15 09:01
标题: 刚刚写了个小脚本,这里测试一下
本帖最后由 taroxd 于 2014-8-15 12:16 编辑

@寒冷魔王 你不是要多维数组吗,写给你就是了
@myownroc 你是不是也说过要啥多维数组来着
@余烬之中 我又来卖萌了

虽然下面这段代码相当没用,只是给Ruby数组加个包装而已。(不然我也不会发在水区)
既然写出来了,就干脆发出来玩玩吧。
代码


测试代码:
RUBY 代码复制
  1. arr = Array.dimension(3)
  2. arr[0][0][0] = 0
  3. arr[0, 1, 2] = 1
  4. arr[2, 2, 2, 2] = [2, 2] # 前两个2为索引,第3个2为start,第4个2为length
  5. arr[2, 3, 1..3] = *3..5
  6.  
  7. arr #=> [[[0], [nil, nil, 1]], [], [[], [], [nil, nil, 2, 2], [nil, 3, 4, 5]]]
  8. arr.join #=> "0122345"
  9. arr.compact.map {|n| n + 1 } #=> [[[1], [2]], [], [[], [], [3, 3], [4, 5, 6]]]
  10. arr.each_index.to_a #=> [[0, 0, 0], [0, 1, 0], [0, 1, 1], [0, 1, 2], [2, 2, 0], [2, 2, 1], [2, 2, 2], [2, 2, 3], [2, 3, 0], [2, 3, 1], [2, 3, 2], [2, 3, 3]]

作者: awedcvgyujm    时间: 2014-8-15 09:09
交出触手我们还是好朋友_(:з」∠)_
作者: 余烬之中    时间: 2014-8-15 11:08
一个小布丁
  1. class Array::MultiDimensional
  2.   def first(c = 1)
  3.     c.times.map{|i| row(i)}
  4.   end
  5. end
复制代码

作者: 余烬之中    时间: 2014-8-15 11:41
本帖最后由 余烬之中 于 2014-8-15 11:55 编辑
余烬之中 发表于 2014-8-15 11:08
一个小布丁


1的结果应该是没有问题的 但是应该拆一层

用一维数组打比方

[0,1,2,3,4].first #=> 0 元素
[0,1,2,3,4].first(2) #=> [0, 1] 数组

另外

[0,1,2,3,4].first(1) #=> [0] 数组
[0,1,2,3,4].first(0) #=> [] 数组

所以改成这样
  1. class Array::MultiDimensional
  2.   def first(c = nil)
  3.     c.nil? ? row(0) : c.times.map{|i| row(i)}
  4.   end
  5. end
复制代码
===================

没 我就在这里编辑的 没有看到你编辑了……
作者: 无脑之人    时间: 2014-8-15 11:50
= =|||
我还是啥也不说好了
作者: 正太君    时间: 2014-8-15 12:02
脚本触们的疯狂自拍,我还是走远一点的好...
作者: 菜鸟飞呀飞    时间: 2014-8-15 16:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: taroxd    时间: 2014-8-15 16:26
本帖最后由 taroxd 于 2014-8-15 16:31 编辑
菜鸟飞呀飞 发表于 2014-8-15 16:02
无责简单弄了个,还是用Table是最好的,虽然有很多限制,用它当index也是可行的


感谢指导!简直就是一个Hash呢。

不过按我的想法,要“按顺序遍历”这个“多维数组”是不是有点麻烦呢?如果预先不知道这个“多维数组”的 xsize,ysize,zsize 的话。
毕竟如果不需要“按顺序遍历”的功能,直接用 Hash 就好了啦。比如独立开关那样的

话说,写了这玩意儿我自己都不会使用的。肯定是 Array.new(n) { Array.new(n) { Array.new } } } 了
上面那一大串破玩意儿,除了 [](*) 方法真的是没啥用。
我自己也不知道写这些东西是要做什么。

说到Hash我又想到了Set库,还有兰触给我做的题来着……感觉Hash真是各种好用。





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