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)