今天想讲的就是关于erlang中的内置函数put(Key, Val)和get(Key),在工作中这两个函数我想也是很多时候会用到的。这两个函数就像连体婴,当你用到put/2的时候,你就需要用
到get/1来取出你放进的数据。而工作中多数会这样来用:
一:定义了一个key
-record(people,{name = null,sex = null,age = 0}).
-define(?KEY,key).
二:用put/2
put(?KEY,#people{name = "man",sex = m,age = 35}).
三:用get/1
case get(?KEY) of
People when is_record(People,#people) ->
#people{name = Name,sex =Sex,age =Age}= People;
_ ->
*******
神奇的是你得到的Name,Sex,Age会跟name = "man",sex = m,age = 35相同,这给我的
感觉就想C/C++中的全局变量,而放到erlang中时就变成了从监控中生成的一个进程里的全局
变量,只要你还在这个进程中操作,就算你调用其他的函数中再用get/1也可以得到同样的数据。
有疑问的是我觉得在这个进程中再创建一个进程同样调用也会得到同样数据,我估这个想法是正确的。
求解!
|