2013-03-02 37 views
0

語言是AS3,但它應該沒關係。 幾乎所有的代碼都可以忽略,我只是遇到了一系列有關函數格式的具體問題,我從來沒有見過,但在bulkLoader中找到這個函數:這個函數實現這種類型的參數輸入是怎麼回事?

下面的問題涉及到後面的代碼這是大量編輯並且沒有意義),除了回答問題中的要求(語法接近100%)之外,不需要對代碼的進一步理解:

組塊1,問題1:什麼這是否意味着在參數中分配數據類型*?

組塊2,問題2:是!url與檢查url參數是否爲null值相同?

組塊3,問題3:這一步的目的是什麼?我不知道用「或語句」(可能不是這意味着在這種情況下)賦值的意思是什麼,或者什麼是空的「{}」表示(可替代空數組「[]」?) 。是否允許在調用時輸入帶字符串ID的參數(即塊5)

塊4,問題4:函數如何突然將參數作爲數組尋址? Chunk 3做了什麼?我假設這是如何通過大塊5中的「id」設置值。

塊5,沒有問題。這是函數調用,它調用ID和優先級(在函數中未顯示),但似乎用戶可以輸入任意數量的參數,只要它們被標記爲函數({foo:blah,bar:bleh })與函數中的匹配字符串名稱作爲props [「foo」,「bar」]。

有人知道這裏發生了什麼嗎?這似乎很有用,但我只是不明白語法足以讓人有線索。

//塊1

public function add(url : *, props : Object= null) : LoadingItem { 

//塊2

if(!url || !String(url)){ 
      throw new Error("[BulkLoader] Cannot add an item with a null url") 
     } 

//塊3

props = props || {}; 

//塊4

 if (!props["id"] && _allowsAutoIDFromFileName){ 
      props["id"] = getFileName(url.url); 
      log("Adding automatic id from file name for item:", item , "(id= " + props["id"] + ")"); 
     } 

}

//塊5

bulkLoader.add("images/image1.jpg", {id:"item1", priority:100});  

回答

2

問題1:*意味着它可以recive任何數據類型作爲參數

問題2:是的,其同樣

問題3:它如果它存在或者創建一個新對象,則接受該對象。 {} == new Object()

問題4:只是在對象中添加屬性的另一種方式。 props["id"] == props.id

+0

太棒了,非常感謝 – ralusek 2013-03-02 16:29:02