程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺析java 希爾排序(Shell)算法

淺析java 希爾排序(Shell)算法

編輯:關於JAVA

淺析java 希爾排序(Shell)算法。本站提示廣大學習愛好者:(淺析java 希爾排序(Shell)算法)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析java 希爾排序(Shell)算法正文


編譯

Lua 固然是說明性說話,但 Lua 源碼老是被編譯為中央情勢後再履行。

dofile 用於載入並履行一個 Lua 文件,比擬之下,loadfile 用於載入一個 Lua 文件,但其實不履行,確實的說 loadfile 編譯了一個 chunk,並前往此被編譯的 chunk(被作為一個函數):


c = loadfile('./test.lua')
c()

dofile 可以被完成為:


function dofile(filename)
    local f = assert(loadfile(filename))
    return f()
end

一個相似 loadfile 的函數 load,它應用字符串(而非文件)作為參數,前往被編譯的 chunk:


f = load('i = i + 1')
i = 0
f(); print(i)  --> 1
f(); print(i)  --> 2

別的,我們可使用敕令 luac 來直接編譯 Lua 文件:


luac -o prog.lc prog.lua
lua prog.lc

毛病

Lua 碰見任何弗成接收的前提時會發生毛病。例如:


local t = {}
-- 失足
t = t + 1

我們可以顯式的挪用 error 函數來發生一個毛病,error 接收一個毛病新聞作為參數:


print 'enter a number:'
n = io.read('*n')
if not n then error('invalid input') end

assert 函數也能夠發生毛病。assert 函數檢討第一個參數能否為 false,假如不為 false 就前往此參數,假如為 false 就發生一個毛病。assert 的第二個參數,毛病新聞,是可選的。典范:


n = io.read()
assert(tonumber(n), 'invalid input: ' .. n .. ' is not a number')

pcall 函數可以捕捉毛病:

local ok, msg = pcall(function()
    assert(false)
end)
 
print(ok, msg)

pcall 函數應用掩護形式(protected mode)挪用第一個參數(此參數為一個函數),假如被挪用的函數履行不存在毛病,pcall 前往 true 並前往被挪用函數的一切前往值,假如被挪用的函數發生了毛病,pcall 前往 false 並附帶上毛病新聞。嚴厲來講,毛病新聞紛歧定須要是字符串:

local ok, err = pcall(function()
    error({code = 502})
end)
 
print(err.code)

追蹤毛病

我們先看一個函數:

function foo(str)
    if type(str) ~= 'string' then
        error('string expected')
    end
    -- ...
end
 
foo(1)

foo 函數須要一個字符串參數,我們履行下面的代碼:

lua: test.lua:3: string expected

輸入指出了毛病湧現在 foo 函數中(由於 foo 函數挪用了 error),而現實上,毛病是 foo 的挪用者發生的,而非 foo 發生的。我們可以設置 level 來修改這個報錯:


function foo(str)
    if type(str) ~= 'string' then
        error('string expected', 2)
    end
    -- ...
end

error 函數的第二個參數為 level,用於指定報錯的地位,level 值為 1 表現 error 的挪用者,值為 2 表現 error 的挪用者的挪用者,以此類推。

pcall 只能前往毛病新聞,許多時刻我們須要完全的挪用棧,這時候可使用 xpcall 函數。xpcall 函數可以吸收一個新聞 handler 作為參數,在被挪用函數湧現毛病時,新聞 handler 會被挪用,經由過程其便可以獲得到以後挪用棧的信息。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved