Re: [wizs] 問題[壹]
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間14年前 (2011/07/03 11:47)推噓1(1推 0噓 0→)留言1則, 1人參與討論串2/2 (看更多)
※ 引述《justinj (黑旋風)》之銘言:
: 因為懶的編名字了....
: 1.一個未知的變數...可能是int,string,mixed,...
: 那我要加一個未知的變數
: 就要先判斷這2個變數是否是同類型的....
: 除了if(objectp(var1)!=objectp(var2))
: if(intp(var1)!=intp(var2))
: .
: .
: 外有別的判斷法嗎?
一般未知的變數例如由 query 讀回來的東西,都會用 mixed 宣告
來儲存這個讀回來的東西。
mixed var1=query("xxx1"), var2=query("xxx2");
要判斷它們是否是相同的型態,一般則可以先 help objectp,然
後從相關索引去看有沒有可用的函數。
參考:
mapp(3), stringp(3), pointerp(3), intp(3), bufferp(3),
floatp(3), functionp(3), nullp(3), undefinedp(3),
errorp(3)
然後就有兩個沒看過的,bufferp 與 errorp,不過這兩個是無關
的。
那或許就可以寫個 simul_efun 叫 varp 之類的,用來回傳該變
數的型態,你也可以自己寫。
int varp(mixed vars)
{
if(stringp(vars)) return 1;
else if(intp(vars)) return 2;
else if(arrayp(vars)) return 3;
else if(mapp(vars)) return 4;
else if(functionp(vars)) return 5;
else return -1;
}
這樣只需做 if(varp(var1)==varp(var2)) 就代表它們是相同型
態的。
: 2.有在用
: call_other("檔案A",({"函數",變數1,變數2,...}));
: 這時 變數1,變數2要符合函數才能正確執行...
: 那我要如何先判斷有沒有符合....
call_other 的語法是..
call_other(物件,"該物件內的某函數",參數1,參數2,參數3,...)
等同於
物件->該物件內的某函數(參數1,參數2,參數3,...)
另外你的問題有點怪,你都已經知道要呼叫的物件、跟他物件下
的函數了,那怎麼會不知道要傳什麼參數過去呢?
然後換一種說法:如果你不知道要傳什麼參數過去→代表你不知
道該物件下的函數是怎麼宣告的→那你就不應該(不被允許)去呼
叫該物件下的函數。
最簡單的例子是假設 laechan 的家族系統,裡面有個函數叫做..
mapping return_all_group_data(裡面有一些參數)
{
return group_data;
}
假設你幸運地知道有這個函數,那或許我有對所接參數做一些限
制,使你無法成功取得 group_data.
這時除非「我告訴你」,或者我開放你 more,不然你是不會知道
的。
: 3.一個檔案有時候有很多的函數
: 那判斷檔案A有無函數B....function_exists(B,A);
: 找指令C所使用的函數..用commands來找...
: 那如果我要知道檔案A有什麼函數的話...
: 要怎麼寫...[函數列表之類的...]
沒有這種東西。
物件所儲存的「資料」,跟物件所宣告的「方法」,如果你有權
限你自然可以讀取、甚至可以撰寫讀取的方法。
但是基本上,物件所宣告的「方法」,也屬於物件所保密的資訊
的一部份,就像你沒辦法知道一個函數裡頭到底宣告了哪些變數
是一樣的道理。
Belldandy.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.253.165.208
推
07/03 16:32, , 1F
07/03 16:32, 1F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
21
49