宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見問題
產(chǎn)品動態(tài)
精選推薦

aardio學習筆記

管理 管理 編輯 刪除

aardio 是一種易用性極強的動態(tài)語言,aardio官網(wǎng):https://aardio.com/

基礎語法

1.命名空間

  • 使用 namespace 關鍵字定義名字空間。如果一個不存在的變量首次被賦值(var語句聲明的局部變量除外),則會自動加入到當前名字空間。
  • 名字空間也可以省略語句塊標記,表示名字空間作用域直至該代碼文件結(jié)束。
  • 名字空間其實也是一個普通的table對象。訪問非當前名字空間的成員變量,可以加上有效的名字空間前綴.訪問頂層名字空間要使用..操作符
  • global為默認的全局名字空間,當aardio代碼文件加載時,默認都運行在global名字空間。self表示當前名字空間。
  • import語句可以將外部名字空間導入當前名字空間
  • 提示
  • 局部變量申明用var語句定義,若不使用var,則此變量申明為當前名字空間成員變量。

2.import語句

  • import語句將一個外部名字空間導入到當前名字空間,import 語句首先會在當前名字空間下查找同名對象是否存在,查找時不會觸發(fā)名字空間的元方法

aardio的庫有三種:

  • 內(nèi)核庫(Kernel Libraries),內(nèi)核庫由aardio提供,例如string庫,raw庫等。
  • 標準庫(Standard Libraries),標準庫由 aardio開發(fā)環(huán)境 提供。位于aardio根目錄下的lib目錄下,庫路徑與名字空間路徑完全一致。
  • 用戶庫(User Libraries),用戶庫是用戶在aardio應用程序根目錄下的lib目錄下建立的庫。庫路徑與名字空間路徑完全一致。
    如果是程序入口是打開工程內(nèi)的代碼文件,根目錄為工程目錄,否則為啟動aardio文件所在目錄。

相關文檔:https://bbs.aardio.com/doc/reference/libraries/import.html

3.類

類可以動態(tài)創(chuàng)建數(shù)據(jù)結(jié)構(gòu)相同的table對象。每一個類擁有獨立的名字空間,名字空間中的變量也就是類的公用靜態(tài)成員。在類內(nèi)部,可以使用this對象引用動態(tài)創(chuàng)建的對象。


//定義類
class cls{
   
    //構(gòu)造函數(shù)
    ctor(name,...){
        this.name = name;
        this.args = {...}
    };
   
    //屬性
    value = staticNum;
   
    //成員函數(shù)
    add = function(v){
        this.value = this.value + v;
        return this.value;
    }
}


//打開類的名字空間
namespace cls{
    staticVar = "類的靜態(tài)變量值";
    staticNum = 2;
}
 
//調(diào)用類創(chuàng)建對象
var obj = cls();

//調(diào)用對象函數(shù)
var v = obj.add(5);



提示
當一個table對象調(diào)用成員函數(shù)時,默認會傳遞一個owner對象給函數(shù)。
而在類創(chuàng)建的對象成員函數(shù)里,owner對象與this對象是指向同一個對象。


this對象與owner對象的區(qū)別在于。
this是類內(nèi)部指向當前創(chuàng)建對象的指針,this指針不會因為函數(shù)的table前綴改變而改變。而owner對象是會根據(jù)函數(shù)調(diào)用時函數(shù)名前綴的table對象而相應改變。

4.元表

  • 使用元表可以自定義對象的默認行為、操作符。
  • 一個table對象可以用另一個table對象(元表)來定義一些元方法(metamethods)。用來定義元方法的表稱為元表(metatable)。元表(metatable)允許我們改變表(table)的行為。例如對兩個表(table)進行相加時,它會檢查兩個表是否有一個表有元表(metatable),并且檢查元表(metatable)是否有_add函數(shù)。如果找到則調(diào)用這個_add函數(shù)去計算結(jié)果。
tab = {	
	@{ //使用@操作符設置元表
		_get = function(k) begin
			io.print(k)
			return owner[[k]] //不調(diào)用元方法
		end;
	
		_float = true; //允許移除元表
	
	}
}

tab@ = {}; //也可以這樣設置元表
tab@ = {}; //這句會出錯,因為元表沒有指定_float屬性時不能被移除

f = tab@._get; //讀取元表

相關文檔:https://bbs.aardio.com/doc/reference/libraries/kernel/table/meta.html

[[]] 是一個raw操作符,它與[]不同的是,它不會調(diào)用元方法,也就是不能重載。

5.消息循環(huán)

Windows是以消息驅(qū)動的操作系統(tǒng),Windows 消息提供了應用程序與應用程序以及應用程序與Windows系統(tǒng)之間進行通訊的手段。 Windows 中有一個系統(tǒng)消息隊列,對于每一個正在執(zhí)行的Windows應用程序,系統(tǒng)為其建立一個“消息隊列”,即應用程序消息隊列,用來存放該程序可能創(chuàng)建的各種窗口的消息。

在aardio窗口程序中,調(diào)用win.loopMessage啟動窗口消息循環(huán),用來從程序的消息隊列中檢索窗口消息并把它們分發(fā)到相應的窗口函數(shù)中?!跋⒀h(huán)”,實際也就是是程序循環(huán),win.loopMessage退出,則窗口程序終止。

當我們用鼠標、按鍵等在窗口上操作時,windows就會將相應的操作轉(zhuǎn)換為消息并加入到消息隊列中。而win.loopMessage就檢索這些消息并將之分發(fā)給窗口函數(shù)(消息回調(diào)函數(shù)wndproc、以及事件函數(shù)oncommand)

在一個GUI線程(窗口線程)中只能啟動一次win.loopMessage循環(huán),重復調(diào)用win.loopMessage不會啟動多個循環(huán)。默認win.loopMessage是不需要參數(shù)的。

當我們指定observer參數(shù)為一個函數(shù)時,則win.loopMessage將該函數(shù)注冊成為消息觀察者。每次從消息隊列中取出消息時,win.loopMessage首先會通知所有的observer(消息觀察者)。如果調(diào)用 win.loopMessage( observer,false ) ,則將消息觀察者observer從觀察隊列中注銷。

6.操作符

aardio操作符優(yōu)先級與C系語言基本兼容,也有很多自己的操作符

  • ++, 字符串連接符
  • [[]],直接下標操作符,獲取或設置對象成員,不會調(diào)用元方法。
  • #,取字符串長度、或table數(shù)組元素個數(shù)。
  • @,@操作符表示元表,table的元表可以是table自已。例: tab@ = tab;
  • $,包含操作符可以將外部文件鏈接到當前代碼中。
  • ..,兩個點表示調(diào)用頂層命名空間下的成員。
  • ...,使用三個連續(xù)的圓點表示任意個數(shù)、任意類型的參數(shù) arg = { ... }
  • _,如果在一個成員變量的前面加上下劃線,則聲明該變量的值為只讀,在賦值后不可修改
  • “”,"/",在 aardio 中文件路徑如果以單個斜桿或反斜桿開始表示『應用程序根目錄』。
  • “~”,"~/",如果文件以 "~" 右單個斜杠或反斜杠開始表示啟動EXE 所在目錄。

7.全局成員

  • _ARGV ,解析后的進程啟動參數(shù)表
  • _CMDLINE命令行參數(shù)的原始文本
  • call(),調(diào)用函數(shù),可自定義owner對象
  • error,拋出一個異常。
  • publish("__/*發(fā)布消息名*/"),在當前線程內(nèi)發(fā)布消息
  • subscribe,訂閱消息設置回調(diào)
  • tostring,對象轉(zhuǎn)字符串

語法

1.基礎語法


//遍歷元組
for(k,v in tab){  

}

//計數(shù)器i從1循環(huán)到10,每次遞增2
for( i=1;10;2 ){ 
   
}

//while
while (true) { 

}

標準庫

1.win

win 庫主要提供 Windows 系統(tǒng)函數(shù)、本進程窗口操作函數(shù)。相關文檔:https://bbs.aardio.com/doc/reference/libraries/std/win.html

  • win.form,窗口類,實例化生產(chǎn)一個窗口。
  • win.loopMessage,啟動窗口消息循環(huán)。
  • win.msgbox,彈出消息提醒框。
  • win.msgboxTest,彈出一個詢問框
  • win.find,查找指定的窗口句柄
  • win.closed,返回當前窗口是否關閉

win.form相關方法:

  • winform.setTimeout,延時執(zhí)行定時器
  • winform.setInterval,指定一個函數(shù),并定時執(zhí)行
  • winform.show,顯示窗口
  • winform.clearInterval、clearTimeout
  • win.delay(),在界面線程中延時并同時處理窗口消息
  • winform.wndproc,監(jiān)聽窗口消息,設置消息處理的回調(diào)函數(shù)
  • 窗口消息
  • 是指Windows發(fā)出的一個通知,告訴應用程序某個事情發(fā)生了。例如,單擊鼠標、改變窗口尺寸、按下鍵盤上的一個鍵都會使Windows發(fā)送一個消息給應用程序。消息本身是作為一個記錄傳遞給應用程序的,這個記錄中包含了消息的類型以及其他信息。例如,對于單擊鼠標所產(chǎn)生的消息來說,這個記錄中包含了單擊鼠標時的坐標。

2.process

process庫提供進程管理函數(shù) ,process是一個類,用于創(chuàng)建進程對象。相關文檔:https://bbs.aardio.com/doc/reference/libraries/std/process/process.html

  • process( "exe執(zhí)行2文件路徑",啟動參數(shù), startInfo),創(chuàng)建進程對象
  • proc.free(),關閉用來控制當前進程的內(nèi)核對象,并非關閉目標進程(停止運行)
  • prcs.write(cmd),寫入數(shù)據(jù)
  • proc.terminate(),強制殺除當前進程,使之停止運行.
  • process.execute(),執(zhí)行指定的exe程序
  • process.kill(),終止指定的進程

3.com

com(Component Object Model組件對象模型)是開發(fā)軟件組件的一種方法。com組件實際上是一些小的二進制可執(zhí)行程序,它們可以給應用程序,操作系統(tǒng)以及其他組件提供服務。

  • com.CreateObject,創(chuàng)建Com對象
  • com.GetObject,返回已運行的Com對象
  • com.ShowHelp,查找Com對象的幫助文檔
  • com.DumpTypeInfo,輸出Com對象的類型信息、成員屬性、成員方法列表

4.io

系統(tǒng)內(nèi)輸入、輸出相關的功能

  • io.open(),顯示控制臺窗口,默認打開控制臺窗口以后,標準輸入輸出的目標是控制臺窗口。。
  • io.close(),關閉控制臺窗口。
  • io.getText(),讀取控制臺的用戶輸入。

文件路徑和文件操作:

  • io.fullpath(),把相對路徑轉(zhuǎn)換為絕對路徑,并且支持用""或"/"作為首字符表示aardio程序根目錄.
  • io.exist(),判斷指定路徑文件是否存在,判斷目錄權限
  • io.splitpath(),獲取指定路徑的信息,返回一個Table(文件名、目錄、擴展名)
  • io.createDir("/__"),創(chuàng)建目錄
  • io.remove("__"),刪除參數(shù)@1指定路徑的文件,此函數(shù)僅用于刪除文件,刪除目錄請改用 fsys.delete、fsys.deleteEx 或 fsys.remove 函數(shù)。
  • io.rename("__",""),重命名指定文件
  • io.open 打開文件,成功返回文件對象
  • io.popen,運行控制臺程序,并且得到返回的內(nèi)容
  • io._exedir,主程序所在目錄,返回完整長路徑,目錄路徑以反斜杠結(jié)尾
  • io._exefile,主程序文件名
  • io._exepath,主程序文件路徑,返回完整長路徑

5.debug

debug 屬于內(nèi)核庫,但必須使用 import debug 導入才能使用

  • debug.callcount(),函數(shù)調(diào)用棧深度
  • debug.debug(),插入斷點,執(zhí)行到該位置時打開控制臺進入調(diào)試環(huán)境,發(fā)布后程序忽略此函數(shù)不執(zhí)行

6.preg

preg是Perl兼容正則表達式支持庫

  • preg("w+","uis"),創(chuàng)建正則表達式對象
  • preg.exec,類js
  • preg.find,返回匹配字符串起始位置,結(jié)束位置,
  • preg.grep,類php
  • preg.match,類php

7.thread

多線程相關文檔:https://bbs.aardio.com/forum.php?mod=viewthread&tid=13625

  • thread.create,創(chuàng)建線程,返回句柄、線程ID,線程函數(shù)有獨立的全局變量環(huán)境,線程引用的庫應當在線程函數(shù)內(nèi) import
  • thread.delay,延時指定時間執(zhí)行線程,導入 win 庫的界面線程內(nèi)會執(zhí)行 win.delay,否則執(zhí)行 sleep 函數(shù)。
  • thread.invoke,創(chuàng)建線程,但是不創(chuàng)建句柄,調(diào)用完畢自動釋放
  • thread.lock("臨界區(qū)名稱"),獲取一個鎖,沒有拿到時,會一直阻塞等待
  • thread.unlock("臨界區(qū)名稱"),釋放鎖
  • thread.table,線程共享表
  • thread.set("標志鍵" )、thread.get("標志鍵"),進程的共享內(nèi)存
  • thread.wait()、waitAll(),等待指定線程句柄的線程運行結(jié)束
  • thread.waitClose(),等待指定線程句柄的線程運行結(jié)束,并釋放句柄

8.thread.command

線程創(chuàng)建雖然傳遞的是閉包,但是不能引用外部的變量,線程有著自己單獨的作用域,可以將外部函數(shù)掛載到thread.command內(nèi),所以線程都可以進行調(diào)用。

  • thread.command(),創(chuàng)建線程命令訂閱對象
  • thread.command.命令函數(shù)名(),如果命令函數(shù)名首字符為$以post模式異步調(diào)用命令,否則以send模式同步調(diào)用該命令

9.console

console庫用打開控制臺,以及和控制臺交互的一些操作。

  • console.getText,輸出文字并獲取用戶輸入
  • console.log,輸入指定的字符串
  • console.pause,暫停
  • console.dumpTable,輸出table
  • console.dumpJson,輸出Json

10.web.json

  • web.json.parse,解析json為table
  • web.json.stringify,table轉(zhuǎn)json

11.sys

  • sys.getComputerName(),返回計算機名
  • sys.getStartTime(),返回系統(tǒng)啟動時間
  • sys.getUserName(),返回當前登錄用戶名
  • sys.hibernate(),休眠
  • sys.lock(),鎖定計算機
  • sys.logoff(),注銷
  • sys.restart(),重啟
  • sys.setComputerName("計算機名"),修改計算機名,重啟后生效
  • sys.shutdown(),關機
  • sys.sleep(),睡眠

12.environment

  • environment.each(),獲取當前應用環(huán)境變量的迭代器
  • environment.system(),獲取系統(tǒng)環(huán)境變量操作對象
  • environment.user() ,獲取用戶環(huán)境變量操作對象

13.string

  • getenv(),讀取當前進程環(huán)境變量
  • setenv(),設置當前進程環(huán)境變量
  • slice(),字符串截取
  • split(),字符串分割
  • string.load,加載文件內(nèi)容
  • string.save,寫入指定內(nèi)容到文件

12.fsys

文件系統(tǒng)、注冊表、Hosts、文件與目錄操作相關的模塊。

  • fsys.copy,復制文件或目錄
  • fsys.createDir,創(chuàng)建目錄并返回創(chuàng)建成功的完整文件路徑
  • fsys.delete,刪除文件或目錄,成功返回 true
  • fsys.getCurDir(),獲取當前目錄。
  • fsys.enum 遍歷指定目錄下的文件和目錄

13.time

  • time(),獲取當前時間。返回時間對象。
  • time.stamp(),取 Unix 時間戳。

14.fsys.dlg

系統(tǒng)文件對話框。

  • fsys.dlg.open,打開選擇單文件對話框
  • fsys.dlg.openEx,打開選擇多文件對話框
  • fsys.dlg.save,顯示保存文件對話框框
  • fsys.dlg.saveOp,顯示保存文件對話框框,覆蓋已存在的文件時顯示確認對話框(overwrite prompt)
  • fsys.dlg.openDir,打開選擇目錄對話框,支持xp
  • fsys.dlg.dir,打開選擇目錄對話框

15.win.dlg.message

封裝了一些簡單的消息提示框。

  • win.dlg.message(),創(chuàng)建一個消息提示框操作對象
  • winMsg.ask,顯示詢問框
  • winMsg.doModal,顯示模態(tài)框

窗口控件

1.treeview

  • treeview.getSelection(),獲取所有被選項

2.edit

  • editObject.appendText ,追加文本并移動光標到文本尾部
  • editObject.clear,清空所有內(nèi)容
  • editObject.print,將多個參數(shù)轉(zhuǎn)換為字符串,并使用制表符分隔各參數(shù)追加到文本尾部,并追加換行
  • editObject.text,編輯控件文本屬性
  • editObject.vScroll(),滾動到底部

問題記錄

1.CDP協(xié)議


/* 設置這倆,才能進行別的頁面操作 */
wb.cdpWait("Network.enable"); //啟用網(wǎng)絡跟蹤,網(wǎng)絡事件現(xiàn)在將傳遞到客戶端。
wb.cdpWait("Page.enable"); //允許操作
wb.cdpWait("Page.setBypassCSP", { enabled = true}); //禁用CSP
wb.cdpWait("Page.addScriptToEvaluateOnNewDocument", {source = extra}); //每次頁面加載時注入JS 

2.字符串編碼轉(zhuǎn)換


// 怪異字符編碼轉(zhuǎn)換
import com.interface.IMultiLanguage2;
var mlang = com.interface.IMultiLanguage2.Create()
var str = mlang.fromto(all,936); 

//正常字符串編碼轉(zhuǎn)換
string.fromto("轉(zhuǎn)換編碼",65001,0)

3.常用目錄


string.getenv("USERPROFILE"); //用戶目錄
io._exedir; //主程序所在目錄

4.excel

excel操作:https://bbs.aardio.com/forum.php?mod=viewthread&tid=5637&highlight=excel

給人點贊,回報無窮!

請登錄后查看

小碼二開 最后編輯于2024-06-04 09:54:32

快捷回復
回復
回復
回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
排序 默認正序 回復倒序 點贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無簡介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復' : '回復'}}
刪除
回復
回復

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復' : '回復'}}
刪除
回復
回復
查看更多
打賞
已打賞¥{{reward_price}}
2698
{{like_count}}
{{collect_count}}
添加回復 ({{post_count}})

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見問題 產(chǎn)品動態(tài) 精選推薦 首頁頭條 首頁動態(tài) 首頁推薦
取 消 確 定
回復
回復
問題:
問題自動獲取的帖子內(nèi)容,不準確時需要手動修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認打賞

微信登錄/注冊

切換手機號登錄

{{ bind_phone ? '綁定手機' : '手機登錄'}}

{{codeText}}
切換微信登錄/注冊
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服