RGSS中Win32API构造函数参数['i']为何使用方括号?
Ruby Win32API参数用数组形式的原因
先看你提到的代码:
x = Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(0x01)
之所以要用['i']这种数组形式,核心是Win32API这个类的构造函数设计逻辑:
- 第三个参数的作用是定义目标Windows API所有输入参数的类型,用数组是为了兼容多参数的场景。
- 比如如果某个API需要两个参数(一个整数、一个字符串),就可以写成
['i', 'p'],数组元素的顺序和API参数的顺序一一对应。
哪怕你调用的GetAsyncKeyState只需要一个整数参数,这个构造函数依然要求用数组传参——这是为了保持接口的一致性,不管API参数数量多少,调用方式都统一,不会因为参数数量变化而改变传参格式。
补充一下参数的含义:
['i']:数组里的单个'i'表示这个API仅接受1个整数类型的输入参数- 第四个参数
'i':代表API的返回值类型是整数,这里不需要数组,因为返回值只有一个类型
内容的提问来源于stack exchange,提问作者hunter 2050
相关产品推荐
相关产品推荐

