當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


erlang expand(Bef0)用法及代碼示例


expand(Bef0) -> {Res, Completion, Matches}
OTP 26.0
expand(Bef0, Opts) -> {Res, Completion, Matches}
OTP 26.0
類型:
Bef0 = string()
Opts = [Option]
Option = {legacy_output, boolean()}
Res = yes | no
Completion = string()
Matches = [Element] | [Section]
Element = {string(), [ElementOption]}
ElementOption = {ending, string()}
Section = 
    #{title := string(),
      elems := Matches,
      options := SectionOption}
SectionOption = 
    {highlight_all} |
    {highlight, string()} |
    {highlight_param, integer()} |
    {hide, title} |
    {hide, result} |
    {separator, string()}

標準擴展函數能夠將字符串擴展為有效的 erlang 術語。這包括模塊名稱:

1> erla
modules
erlang:

函數名稱:

1> is_ato
functions
is_atom(
2> erlang:is_ato
functions
is_atom(

函數類型:

1> erlang:is_atom(
typespecs
erlang:is_atom(Term)
any()

並在無法進行其他有效擴展時自動添加 , 或右括號。擴展函數還完成:shell 綁定、記錄名稱、記錄字段和映射鍵。

如下所示,如果函數頭有相同的擴展建議,則它們會被分組在一起,在這種情況下,所有函數頭都有相同的建議,即'}'。對於過濾掉與提示中術語的類型不匹配的函數類型規範也有有限的支持。下麵隻顯示了 4 個建議,但 erlang:system_info 還存在更多類型規範。

1> erlang:system_info({allocator, my_allocator
typespecs
erlang:system_info(wordsize | {wordsize, ...} | {wordsize, ...})
erlang:system_info({allocator, ...})
erlang:system_info({allocator_sizes, ...})
erlang:system_info({cpu_topology, ...})
}

expand 函數的返回類型指定 Element 元組列表或 Section 映射列表。引入部分概念是為了為擴展結果提供更多格式選項。例如,shell 擴展支持突出顯示文本和隱藏建議。還有一個 {highlight, Text} 突出顯示標題中所有出現的 Text ,還有一個 highlight_all 為簡單起見突出顯示整個標題,如上麵的 functionstypespecs 所示。

通過設置 {hide, result}{hide, title} 選項,您可以隱藏建議。有時標題沒有用,隻會產生文本噪音,在上麵的示例中, any() 結果是標題為 Types 的部分的一部分。目前未使用隱藏結果,但其想法是可以在展開區域中選擇一個部分,並且應折疊所有其他部分條目。

可以在標題和結果之間設置自定義分隔符。這可以通過 {separator, Separator} 來完成。默認情況下,其設置為 \n ,某些結果顯示 type_name() :: ,後跟定義 type_name() 的所有類型。

{ending, Text} ElementOption 隻是將 Text 附加到 Element

相關用法


注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 expand(Bef0) -> {Res, Completion, Matches}。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。