# 常見問題(FAQ)
## 目錄
[TOC]
## 這個Lib的作用是什么?
為AHK補足基礎功能。
> AHK 沒有官方自帶或者第三方實現的完善的標準庫,這樣如果需要實現非內置的功能通常需要直接調用 Windows API 或尋找別人封裝好的函數。AHK 語言本身并不強大,缺少很多現代語言所具備的高級特性,同時也缺乏對多線程等操作系統特性的支持。[-- 陌辭寒](https://segmentfault.com/a/1190000005006771)
### 為什么不叫標準庫 stdlib ?
因為已經有叫這個名字了,還不止一個。
## 更多介紹一下"中心式導入"?
### BeanLib使用要求
將所有"子Lib"導入某腳本。
"子Lib"指的是除了"BeanLib.ahk"之外的所有該項目下的 .ahk 文件。
#### 為什么是 除了"BeanLib.ahk"之外 ?
BeanLib.ahk 是"中心式導入" 的示例文件,你可以使用其中的固定地址,也可以自定義,并不是必須的。
### "中心式導入"具體是什么意思?
為了導入整個Lib庫,先把所有"子Lib"導入一個"中心式"Lib文件。
其他想引用Lib的腳本,只需要導入"中心式"文件即可。
這樣后期維護起來會非常的方便。
### 如果想使用"中心式導入",又無法使用示例中的地址該怎么辦?
Clone Git 之后,你可以建立一個屬于自己的"中心式"Lib文件,然后將它添加到Git的忽略列表中。
這個方法的缺點在于,如果 "子Lib" 的結構有改變,你需要手動更改自己的"中心式"Lib文件。
其實一般不會有什么問題,Pull 的時候只要留意一下,是否有大的改動就可以了。
### 除了"中心式導入",還有沒有其他的導入方法?
具體參考,AHK幫助文檔里面會有非常多的介紹。
這里還有幾點建議,供您參考。
- 最好不要使用"自動入庫"。因為這種方法只會在"顯式調用"的時候生效,也就是無法動態引用,可能會造成很多兼容性問題。
- 優先考慮使用"相對路徑"。"絕對路徑"會讓后期維護非常麻煩。
## 為什么三個平臺內容不一樣?
看云 是最優先更新的平臺,因為對文檔展示的兼容性最好,支持搜索。
在源代碼沒有更改的情況下,[GitEE](https://gitee.com/xrvu_zen/BeanLib) 和 [GitHub](https://github.com/Oilj/BeanLib) 都不會更新。
所以當內容不一致時,以 [看云](http://www.hmoore.net/xrvu_zen/ahk_lib/902301) 為準。
## 為什么函數失效了?
- 檢查類是否被覆蓋。
AHK中類是對象,直接加載到全局空間,所以類是可以被覆蓋的。為了避免這一情況,BeanLib類都以"_"開頭。可以開啟 `#Warn ClassOverwrite` ,當類被覆蓋時,將會收到提示。
- 檢查是否開啟強制Local。
- Class 默認為"強制全局",但如果函數體的第一行是Local,那么 Class 的"強制全局"會失效。
您可以取消Local,或者在Local后聲明 Class 為全局,格式為 `Global ClassName`。
- 如果您開啟Local是為了避免收到 LocalListmeGlobal 警告,那么也可以單獨關閉該警告。
在`#Warn`后方添加,`#Warn LocalSameAsGlobal, Off`,即可。
- 檢查輸入值/返回值。
AHK語法靈活,沒有類型,所以輸入值容易出錯,請檢查輸入是否符合要求。
如果您期待函數返回一個值,請檢查該函數是否的確應當返回該值,很多時候函數只是對傳入的地址中的數據進行操作,并不返回值。(尤其是傳入參數為 ByRef 或者為 數組 時。)
- BUG。
還有一種可能,就是程序設計出現了BUG。
您可以在對應文檔下方評論留言,提交issue,或者 Pull Request。
- 指南 (README)
- 常見問題 (FAQ)
- 更新歷史(CHANGELOG)
- 貢獻指南 (CONTRIBUTING)
- 開源協議 (LICENCE)
- 鳴謝 (ACKNOWLEDGEMENT)
- 文檔模板 (TEMPLATE)
- 新手指南(BEGINNER_GUIDE)
- 語法高亮(HIGHLIGHTING)
- Class
- _Container
- _EX
- _List
- _Map
- _Win
- _Wins
- BeanEnum
- HotString
- HotStringMaps
- InvisibleCharacter
- JSON
- JsonFile
- Method
- ObservableMap
- ObservableObj
- WinEvent
- Timer
- MesToast
- APPLocker
- AutoClassify
- Everything
- Function
- Ini
- AutoInputBox
- ParaChecker
- PathObj
- RunningSpeedTest
- Script
- Switcher
- Stack
- TimeChecker
- Type
- UMSS
- Function
- assert()
- Analyze()
- AnalyzeClassName()
- AutoBind()
- bulkMoveFile()
- ExcelToList()
- getClass()
- getCurrentTime()
- getFunc()
- Instanof()
- InstanceCheck()
- loadMethod()
- LogPrintln()
- rawCall()
- RandomStr()
- showObj()
- Type()
- throwWithSt()
- UseCMD()
- ObjDump()
- Test
- ObjLoad()
- StringMethod
- TypeClass
- MapFactory()