a:=[1] MsgBox % type(a) MsgBox % type("") ; String MsgBox % type(1) ; Integer MsgBox % type(1/1) ; Float MsgBox % type("1") ; String MsgBox % type(2**42) ; Integer ; 这取决于以下几点: ; 与变量不同,数组元素不能同时包含字符串和纯数字。 ; 字段的“容量”是在需要扩展之前它可以容纳的字符串大小。如果它不包含字符串,则它没有容量。 ; SetFormat 尚未用于从浮点字符串格式中删除小数点。(如果 var 是 float具有相同的限制,因为它总是将值转换为字符串进行分析。) ; https://www.autohotkey.com/boards/viewtopic.php?f=6&t=2306 ; 对象版本 - 取决于当前的浮点格式,包括小数点。 type(v) { if IsObject(v) return "Object" return v="" || [v].GetCapacity(1) ? "String" : InStr(v,".") ? "Float" : "Integer" } ; 汉化版 类型判断(v) { if IsObject(v) Return "对象" Return v="" || [v].GetCapacity(1) ? "字符串" : InStr(v,".") ? "浮点数" : "整数" } ; 示例 array := [1, 2, 3] dict := { key1 : "value1", key2 : "value2" } MsgBox % IsObjectArrayOrDict(dict) ; 自定义函数,判断对象是数组、字典还是其他类型 IsObjectArrayOrDict(obj) { if (!IsObject(obj)) Return "不是对象" else if (obj.Length() && obj[1]) Return "数组" Return "字典" } ; COM版 - 报告 32 位范围之外的整数类型错误。 ; type(ByRef v) { ; if IsObject(v) ; return "Object" ; a := ComObjArray(0xC, 1) ; a[0] := v ; DllCall("oleaut32\SafeArrayAccessData", "ptr", ComObjValue(a), "ptr*", ap) ; type := NumGet(ap+0, "ushort") ; DllCall("oleaut32\SafeArrayUnaccessData", "ptr", ComObjValue(a)) ; return type=3?"Integer" : type=8?"String" : type=5?"Float" : type ; }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)