作者laechan (小太保)
看板mud_sanc
标题[wizs] 系统撰写概要(一)
时间Tue Feb 3 14:58:28 2009
简单的系统由一个房间组成,内容大致如下...
inherit ROOM;
void create()
{
::create();
seteuid(getuid(this_object()));
if(file_exists(__DIR__+"test.o"))
restore_object(__DIR__+"test");
else
{
set("short","一个系统测试房间");
set("long",@LONG
这里是一个系统测试用房间.
LONG
);
}
}
int save_room()
{
save_object(__DIR__+"test");
return 1;
}
重点就在上面的 save_object 与 restore_object.
if(file_exists(__DIR__+"test.o"))
restore_object(__DIR__+"test");
比方我房间写在 /u/l/laechan/test.c,而我储存资料的档名叫 test.o
,也是放在 /u/l/laechan 的话,那 __DIR__ 当然就是指 /u/l/laechan/
所以上面的意思就是如果 __DIR__+"test.o" 这个档案存在的话, 就去
restore_object 那个档案,把资料档 .o 里头的资料读出来然後做回存
restore_object 是回存, 那 save_object 就是存档.
另一种常见的写法就是..
save_object( base_name(this_object()) );
我们知道 base_name 是读取档名, 例如上面的 test.c, base_name 的
结果就是 /u/l/laechan/test,而再去 save_object 它,自然就会变成
/u/l/laechan/test.o
也就是说 .o 实际上是系统内定的 save_object 档副档名.
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.131.225.28