Lua程序設計 表達式

        表達式用於表示值。Lua的表達式中能夠包含數字常量、字面字符串、變量、一元和二元操做符及函數調用。區別於以往的,Lua的表達式中能夠包括函數定義和table構造式。函數

        算術操做符lua

        Lua支持常規的算術操做符有:二元的加(「+」)、減(「-」)、乘(「*」)、除(「/」)、指數(「^」)、取模(「%」);一元的負號(-),全部的這些操做均可用於實數。spa

其中取模操做符根據如下規則定義:a % b == a - floor(a / b) * b。code

        對於整數來講,以上算式的計算結果的符號永遠與第二個參數相同。對象

        對於實數來講,x % 1 = x 的小數部分;x - x %1 = x 的整數部分;相似地,x - x%0.01精確到小數點後兩位的結果。字符串

x = math.pi
print(x - x%0.01)  ------->3.14

        關係操做符table

         Lua提供了: <     >     <=     >=    ==   ~= 這些關係操做符。全部這些操做符的運算結果都是true或false。若是兩個值具備不一樣的類型,Lua就認爲他們是不相等的。不然,Lua會根據他們的類型來比較二者。這裏nil只與其自身相等。class

        對於Table、userdata和函數,只有當他們引用同一個對象時,才認爲他們相等。變量

a = {} 
a.x = 1
a.y = 0


b = {}
b.x = 1
b.y = 0



c = a
結果:a == c, a ~= b

         Lua中只能對兩個數字或兩個字符串做大小性的比較。Lua按照字母次序比較字符串,具體的字母次序取決於對Lua的區域設置。數字和字符串以外的其餘類型只能進行相等或者不等性的比較。引用

         邏輯操做符

         邏輯操做符有and,or 和 not。與條件控制語句同樣,全部的邏輯操做符將false和nil視爲假,而將其餘的任何東西視爲真。

         對於and來講,若是它的第一個操做數爲假,就返回第一個操做數;否則返回第二個操做數。

   and是哪一個爲假就返回哪個,若是兩個都爲假就返回第一個假的。若是兩個都爲真就返回最後一個真的。

         對於or來講,若是它的第一個操做數爲真,就返回第一個操做符;否則返回第二個操做數。

   or是哪一個爲真就返回哪個,若是兩個都爲真就返回第一個真的,若是兩個都爲假就返回最後一個假的。

         and 和 or 都使用」短路求值「,只會在須要時纔去評估第二個操做數。能夠確保("type(v) == "table"  and  v.tag == "h1"")

         經常使用的Lua習慣寫法

  "x = x or v"
  等於
  if not x then x = v end

      字符串鏈接

       Lua中接兩個字符串,可使用操做符「..」,若是其任意一個操做數是數字的話,Lua會將這個數字轉換成一個字符串。

       Lua中的字符串是不可變的值。鏈接操做符只會建立一個新的字符串,而不會對其原操做數進行任何修改。

a = "hello"
print(a .. "world")   --- >helloWorld
print(a)              ----> hello

      優先級

      Lua 操做符的優先級:

^
not  #  -(一元)
*    /    %
+     -
..
<    >    <=   >=    ~=   ==
and
or

     二元操做中,除了指數操做符和連接操做符是「右結合」,全部其餘操做符都是「左結合」

相關文章
相關標籤/搜索