Re: [轉載] [蟑螂賀失戀] 中階 LPC 第5~6章

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間17年前 (2009/03/06 17:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
第五章講字串的高級處理......其實那個大家應該都會了。 [..] 這個很好玩,假設一個 str = "abcdef", 那 str[0..2] 就是  等於 "abc" (取出第0個char~第2個char之間的東西) 作者有提到有趣的範例就是 "abcdef"[0..2] 這樣的語法,例  如... write("abcdef"[0..2]+"\n"); 其結果就是秀 abc 這個字串。 sscanf 文中有提到一個特殊用法... int x; sscanf("145", "%d", x); 我們知道 atoi("145") 其實就會傳回整數的 145,但也可以  用上面的例子來實現,例如聖殿有把字串變整數的 atoi 函數  可用,但是沒有把浮點數變字串的函數怎麼辦? float x = 1.05; string str; sscanf(x,"%f",str); 這樣 1.05 就會變成字串的 "1.05"了 <= 如果翻譯的文沒說錯的話XD 它另外有提到 %* 是要丟棄的東西,這個我沒實際用過,但它  的想法就是... sscanf("20 int to baha","%d %s to %s",money,money_kind,who); 就是把 20 gold to baha 拆解出三個變數,但是在聖殿裡頭影特幣幾  乎是唯一的交易單位,我們雖讀出了 money_kind 但實際上這變數幾乎  用不到,這時我們就可以這樣寫.. sscanf("20 int to baha","%d %*s to %s",money,who); 這樣我們就不用去宣告 money_kind 這個東西了。 (然後 20 跟 to 之間依然還是得接東西,只是不一定要接 int) ::create() 這個其實是很簡單的概念,例如 ROOM = "/std/ob/room.c" "/std/ob/room.c" ========================================================== 它宣告了一個 create() 函數 "/u/l/laechan/test.c" ========================================================== inherit ROOM; 我自己的房間也宣告了一個 create() 函數  問題:我如何在我的 create() 中先套入 ROOM 裡頭的 create     呢?  方法有兩種.. 1)ROOM->create(); 2)::create(); 作者就是在告訴你,如果你已經 inherit ROOM 了,那用 ::的  語法就可以把 ROOM 裡頭的 create 拿來用。 函式和變數標籤 這個我懶得研究,大致有三種,我簡單說一下我知道的... static 如果我們在一個有用 save_object/restore_object 的系統   中有用 static 宣告一些變數的話,那這些變數是不會被存   進 .o 資料檔裡頭的,大樂透有些變數就是用 static 宣告   ,因為並不是所有資料都得被存進去,例如.. static mixed nums=({"01","02",.......}) private(私有) 這個意思就是,例如我某個物件裡頭定義了一個函數.. private change_short(string str) { set("short",str); } 然後我們要改這個物件的 short 而去 call 它.. call xxx;change_short;"一個房間" 基本上這個 call 是不被接受的,它只被這個物件自己呼叫   時才能改。 "一個私有變數或函式只能由宣告它的物件內部參考之" 例如我寫在這個物件裡頭的某個程式段有 change_short,   這就是合法的,外部 call 的方式就是非法的。 nomask 這主要是用在 inherit 裡頭,以上例來說,ROOM 有定義一   個 create,我自己的房間也有定義 creatr,但假若 ROOM   的定義是.. nomask create() 那我的 room 如果繼承 ROOM 的話就不能定義 create,因   為 ROOM 的 create 已經被設為 nomask 了。 private 跟 nomask 通常是用來保護一些東西用的。 (剛看完文,我覺得它跟我講的東西大概差不多,還好...XD) Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.170.228.153
文章代碼(AID): #19iElNNS (mud_sanc)
文章代碼(AID): #19iElNNS (mud_sanc)