2 回答

TA貢獻1875條經(jīng)驗 獲得超3個贊
以上三個問題作一個問題回答。
簡單的回答就是中括號表示這個參數(shù)非必須.
接下來詳細(xì)解釋。
首先,這樣使用中括號只是出于一種的表達(dá)形式的需要而已(這樣的表達(dá)形式很常見),這與api本身是沒有關(guān)系的。
然后,我們拿上面的例子來說
buf.write(string[, offset[, length]][, encoding])
對于buf.write
這個方法:
第一個參數(shù)string
是必須的,他表示你要寫入的內(nèi)容;往后的offset
、length
、encoding
這些參數(shù)都是非必須的。這些參數(shù)你可以不傳(用[]括起來表示不傳),但并不表示這三個參數(shù)你想怎么傳就怎么傳的,這里是有規(guī)則的,規(guī)則從這里中括號的對應(yīng)關(guān)系中可以看出來。我們來看他的對應(yīng)關(guān)系:[, offset[, length]]
&& [ encoding]
。這表示offset
、length
和encoding
你可以傳或者不傳,但是你要是沒有傳offset
的話那length
是一定不能傳的,這就是為什么length
要放在offset
的括號里面的原因。
所以整個例子理解起來就是:string
必須傳,offset
、length
、encoding
可傳可不傳,但是offset
不傳的話length
也不能傳。
至于這樣寫有什么好處,我想這可能是當(dāng)初寫api那幫家伙覺得這樣表達(dá)更合理吧,后面寫文檔的覺得這種方式還不錯,就依葫蘆畫瓢了,慢慢的就約定俗成了。
添加回答
舉報