# 常见问题(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) 都不会更新。
所以当内容不一致时,以 [看云](https://www.kancloud.cn/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()