相关疑难解决方法(0)

可以在Ruby中使用指针吗?

我认为Ruby被解释为C.如果是这样,我如何使用指针和其他功能的概念作为C环境的一部分?我们如何利用Ruby的简单性来利用C的强大功能?

ruby

22
推荐指数
1
解决办法
2万
查看次数

Ruby和指针

我正在为一个小型游戏编写一个Dungeon Generator.

地下城是由房间组成的.A roomconnections其他房间.

room.connections = [room_a, room_b]

room.number = 1 # unique id

现在我需要按它的号码选择一个房间.

我首先用一个recursive_scan方法做了这个,因为房间可以导入圆圈而导致StackOverflowError无效.所以我把一个already_scanned带有房间号码的数组放进去,这个数字已被选入方法的算法中.然后它没有扫描所有的房间 - 顺便说一句,我不知道为什么,根据我的逻辑不合理它应该有效.

然后我试图将所有房间也放在一个阵列中,然后迭代阵列为想要的房间 - 但在这里我得到了问题,每个房间基本上连接到其他每个房间,至少与其他房间相连; 所以阵列变得如此大dungeon_size * array_of_rooms.length.

我现在需要的是一个显式指针 - 我知道几乎每个ruby中的var都是一个指针,除了Fixnums和Float(还有其他一些).尽管如此,数组变得很大,所以我需要一个真正的指针.

(我也尝试设置一个object_ids数组并通过ObectSpace加载它们,但遗憾的是 - 因为我经常需要加载房间 - 那些带有想要的object_id的房间已经被回收了,正如错误信息所解释的那样.)

这是我的递归扫描方法:

def room(number)
  recursive_scan(@map, number, []) # @map is the entrance room
end

private

def recursive_scan(room, number, scanned)
  scanned << room.room_number
  if room.room_number == number
    room
  else
    r = nil
    room.connections.each do |next_room|
      if !scanned.include?(next_room.room_number)
        r = recursive_scan(next_room, …
Run Code Online (Sandbox Code Playgroud)

ruby pointers

3
推荐指数
1
解决办法
2171
查看次数

标签 统计

ruby ×2

pointers ×1