Re: [wizs] 問題[壹]

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間14年前 (2011/07/03 11:47), 編輯推噓1(100)
留言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
了解.....2主要是call指令的用法...amem
07/03 16:32, 1F
文章代碼(AID): #1E3-PEK- (mud_sanc)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
1
1
文章代碼(AID): #1E3-PEK- (mud_sanc)