在Lua中使用模組的基礎教程

來源:互聯網
上載者:User

在Lua中使用模組的基礎教程

   這篇文章主要介紹了在Lua中模組的基本使用方法,是Lua入門學習中的基礎知識,需要的朋友可以參考下

  什麼是模組?

  模組是一個像,可以使用需要載入並有包含表中的單個全域命名的庫。該模組可包含若干函數和變數。所有這些函數和變數被包裹在以它作為一個命名空間的表。也是一個很乖的模組有必要的規定,返回此表上所需要的。

  Lua模組

  表中的模組的使用可以協助我們以多種方式,使我們能夠操縱模組中我們操縱任何其他lua的表相同的方式。作為操縱模組的能力的結果,它提供了額外的功能的量等語言需要特殊的機制。由於lua模組,這個免費的方式下,使用者可以調用Lua函數以多種方式。如下面幾個:

   代碼如下:

  -- Assuming we have a module printFormatter

  -- Also printFormatter has a funtion simpleFormat(arg)

  -- Method 1

  require "printFormatter"

  printFormatter.simpleFormat("test")

  -- Method 2

  local formatter = require "printFormatter"

  formatter.simpleFormat("test")

  -- Method 3

  require "printFormatter"

  local formatterFunction = printFormatter.simpleFormat

  formatterFunction("test")

  在上面的範例程式碼中,可以看到如何靈活的編程Lua是沒有任何特殊的額外的代碼。

  函數規定

  Lua提供了一個名為規定載入所有必要的模組進階函數。它被保持儘可能的簡單,以避免對模組太多的資訊,以將其載入。該規定函數只是假定模組作為一個代碼塊定義一些值,這實際上是函數或者包含函數表。

  樣本

  讓我們考慮一個簡單的例子,其中一個函數具有數學運算功能,並允許調用此模組作為mymath和檔案名稱是mymath.lua。該檔案的內容如下。

  代碼如下:

  local mymath = {}

  function mymath.add(a,b)

  print(a+b)

  end

  function mymath.sub(a,b)

  print(a-b)

  end

  function mymath.mul(a,b)

  print(a*b)

  end

  function mymath.div(a,b)

  print(a/b)

  end

  return mymath

  現在為了訪問該lua模組中的另一個檔案moduletutorial.lua,則如下所示。

  代碼如下:

  mymathmodule = require("mymath")

  mymathmodule.add(10,20)

  mymathmodule.sub(30,20)

  mymathmodule.mul(10,20)

  mymathmodule.div(30,20)

  為了運行這些代碼,我們需要把在同一個目錄下2 個lua檔案,或者也可以放在包路徑的模組檔案,並需要產生額外的設定。當我們運行上面的程式,會得到下面的輸出。

  代碼如下:

  30

  10

  200

  1.5

  需要記住的事情

  將模組在同一個目錄下運行該檔案。

  模組名稱和它的檔案名稱必須是相同的。

  這是返回模組規定函數,因此該模組也可以實現較好如所示,就算能找到其他類型的實現別的地方的最佳實務。

  實現模組的老辦法

  現在重新編寫相同的例子,其中使用包舊的方式。查看所有類型的實現。這是在使用Lua版本5.1和5.0。math模組如下所示。

  代碼如下:

  module("mymath", package.seeall)

  function mymath.add(a,b)

  print(a+b)

  end

  function mymath.sub(a,b)

  print(a-b)

  end

  function mymath.mul(a,b)

  print(a*b)

  end

  function mymath.div(a,b)

  print(a/b)

  end

  moduletutorial.lua模組的使用方式如下所示。

   代碼如下:

  require("mymath")

  mymath.add(10,20)

  mymath.sub(30,20)

  mymath.mul(10,20)

  mymath.div(30,20)

  當我們運行上面,我們會得到相同的輸出。但建議在使用代碼的舊版本,它被認為不太安全。使用Lua中像Corona SDK 編程的許多軟體開發套件已經過時。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.