2012-03-02 57 views
1

在GitHub上項目的「工作」,「jobs_info.erl」的文件,它包含以下代碼:不明二郎語法

pp(L) when is_list(L) -> 
    [pp(X) || X <- L]; 
pp(X) -> 
    case '#is_record-'(X) of %<=========What's meaning of '"#is_record-'? 
    true -> 
     RecName = element(1,X), 
     {RecName, lists:zip(
      '#info-'(RecName,fields), %<=======what's meaning of ''#info-'? 
      pp(tl(tuple_to_list(X))))}; 
    false -> 
     if is_tuple(X) -> 
      list_to_tuple(pp(tuple_to_list(X))); 
      true -> 
      X 
     end 
    end. 

什麼的'#is_record-'''#info-'表達? 「is_record」可能被引用到erlang:is_record? 但是什麼是''#info-'「?

+2

你可能會發現這個值得看:https://github.com/esl/parse_trans/blob/master/src/exprecs.erl#L116 – 2012-03-02 11:44:00

+2

這些只是「有趣」的功能名稱。在erlang中,函數名必須是* atom *,正如@Mille指出的那樣,如果通過用'''圍繞原子中的字符,則基本上可以在名稱中包含任何字符。所以'#is_record-''和'#info-''只是原子。它們與記錄或其他任何內容都沒有內在聯繫。 – rvirding 2012-03-02 20:07:49

回答