erlang的一些知識點補充

2021-10-05 13:53:28 字數 1580 閱讀 6985

元數屬性

塊表示式

動態**載入

函式引用

包含檔案

列表操作

巨集模式的匹配操作符

整數程序字典

下劃線變數

定義: 函式的引數個數

兩個名稱相同,元數不同的函式是完全不同的函式。

語法: -atomtag(…)

注意: -record(…) , -include(…) 不算模組屬性

分兩類:

預定義型

使用者定義型

使用: 語法要求單個表示式,但是想使用多個。比如列表推導 [ e || … ] e是單個表示式。

格式:begin

expr1

…,exprx

enda模組執行b模組,如果b在執行過程中重新編譯或改動了,a會在下一次呼叫時,呼叫最新的版本。

如果a模組被改變或重新編譯了,那麼erlang虛擬機器中有兩個a的不同版本同時執行:當前版和舊版。如果繼續改變 a,那麼當前版變為舊版,重新編譯後的移為當前版。

目的:想要引用當前或外部模組裡定義的某個函式。

格式:fun localfunc/arity 引用當前模組中的函式。

fun mod:remotefunc/arity 引用外部模組中的函式。

包含的檔案必須是 .hrl

-include(filename).

-include_lib(name).

++ : [1,2,3]++[4,5,6] 為 [1,2,3,4,5,6]

– :例子:

[a,b,c,1,d,1] – [1] 為 [a,b,c,d,1]

[a,b,c,1,d,1] – [1,1] 為 [a,b,c,d]

注意,如果符號x在b中值出現了k次,那麼a值會移除k個x。

格式:-define (constant,replacement). 定義值。

-define(func(var1,var2,…,var),replacement). 定義操作。

使用: ?constant , ?func( vaf1,var2,…var )

預定義的巨集

巨集控制流

例1: func1( [=z|t)

例2: func1( [tag, =za, b} =z2 |t])

傳統寫法: 1, 123,41

k進製整數: k # digits , 如2#123

$寫法: $a是97簡寫,$1是49簡寫

每個erlang程序都有乙個程序字典的私有資料儲存區域,是一種鍵值對儲存。

put(key,value) -> oldvalue

get(key) -> value

get() -> 返回整個字典的資料

get_keys(value) -> [key] 返回值為value的所有鍵

erase(key) -> value 返回key的關聯值,並且刪除,沒有返回undefined

erase(key) -> 返回所有值,並刪除。

作用1: 命名乙個我們不打算使用的變數,例如open(file,_0), open(file,_mode)

作用2: 用於除錯,編譯器不會報警告

一些知識點

字串拼接 1.a join b a為元素之間的分隔符,b為待分割的序列 可用於輸出時的資料處理,元素間有空格,末尾沒有 2 s s s str1,str2,str3 前半部分為字串,後半部分為索引。用於引入,s是物件 3.format str1,str2,str3 與f 括號裡為已有變數 關於for...

一些知識點

1.vector是在堆上還是棧上?在堆上.2.我們發現指標有一些 似是而非 的特徵 1 指標消亡了,並不表示它所指的記憶體會被自動釋放。比如函式中的指標是區域性變數,如果它指向了堆上,而自己出了函式後消亡了,但它所指向的記憶體還是存在的,導致了記憶體洩漏.2 記憶體被釋放了,並不表示指標會消亡或者成...

一些知識點

1 sln 解決方案檔案 csproj 專案檔案 cs 原始檔 解決方案包含多個專案,每個專案都是乙個程式。config 配置檔案 3 const int a 1 const 定義乙個量為常量,運算中用到當常量使用,不可以再重新賦值。4 型別轉換。1 隱式轉換。從值型別轉換成引用型別。從引用型別轉換...