《erlang程序設計》第三章基本概念學習

  1. 變量shell

    變量必須以大寫字母開頭。在erlang裏,變量就像數學裏的那樣。當關聯一個值與變量時,所下的是一種斷言,也就是事實的陳述。這個變量就是那個值,僅此而已。編程

    對X=1234這個簡單語句所帶有的兩種假設。ide

  •  首先, X不是一個變量,不是你習慣的Java和C等語言裏的概念this

  •  其次,=不是一個賦值操做符,而是一個模式匹配操做符。spa

    This behavior of the = operator is the basis of something called 'Pattern matching',rest

    What this operator does when mixed with variables is that if the left-hand side term is a variable and it is unbound (has no value associated to it), Erlang will automatically bind the right-hand side value to the variable on the left-hand side. The comparison will consequently succeed and the variable will keep the value in memory.
    code

    即對於 「Lhs = Rhs」這樣一個式子。其先對Rhs求值,再將其結果與左端Lhs進行模式匹對。
    ci

    在erlang裏,變量得到值是一次成功模式匹配的操做結果。字符串

  • Technically, variables can start with an underscore ('_') too, but by convention their use is restricted to values you do not care about, yet you felt it was necessary to document what it contains.underscore

  • You can also have variables that are only an underscore:

2> _ = 1+3.  
4
3> _.
* 1: variable '_' is unbound

The _ variable is always seen as unbound and acts as a wildcard for pattern matching.

變量「_」是不綁定的,既沒有值, 在模式匹配中能夠做爲通配符使用。


2、 原子

        在erlang裏,原子被用於表示常量。至關於C語言中的宏定義。原子以小寫字母開頭,後接一個串字母,數字,下劃線(_ )或者@,若是不是以小寫字母開頭,或是小寫字母以外的符號開頭,原子能夠放在單引號(' )內。如'Monday','_name'等

        在某些語言裏,單引號和雙引號能夠互換使用。Erlang裏不是這樣的。單引號的用法如上面所說,雙引號用於給字符串字面量(string literal)定界。


3、 元組

    若是想把一些數量固定的項目歸組成單一的實體,就會使用元組(tuple)。建立元組的方法是用大括號{}把想要表示的值括起來,並用逗號分隔它們。

    爲了容易記住元組的用途,一種經常使用的作法是將原子做爲元組的第一個元素,用它來表示元組是什麼。這種給元組貼標籤的方式不是語言所要求的,而是一種推薦的編程風格。

看看下面的例子,每一個語句分別表明了什麼意思?爲何有的時候匹配不成功?

1> P = {10 , 5}.  %%給變量P綁定一個元組
{10,5}
2> P = { point, 10, 5}.  %%再次給P賦值,則是匹配不成功,變量得到值是一次成功模式匹配的操做結果。
** exception error: no match of right hand side value {point,10,5}
3> P1 = {point, 10, 5}.  %%使用令一個變量還綁定元組
{point,10,5}
4> {point1, X, Y} = P1.  %%不匹配的緣由是由於point1和 point是不一樣的原子。原子表示的是常量。
** exception error: no match of right hand side value {point,10,5}
5> {point, X, Y} = P1.   %%匹配成功,變量X,Y分別綁定十、5
{point,10,5}
6> X.
10
7> Y.
5
8> X= 20.      %%再次給X綁定值則不成功,由於變量X綁定了值了。
** exception error: no match of right hand side value 20

明白了上面的例子,就簡單的理解了在Erlang裏變量,原子,元組的基本的概念。

這個連接講數據類型等講的的超好:http://learnyousomeerlang.com/starting-out-for-real

相關文章
相關標籤/搜索