Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于TArray导出给lua的接口 #41

Closed
Junho2009 opened this issue Sep 4, 2019 · 6 comments
Closed

关于TArray导出给lua的接口 #41

Junho2009 opened this issue Sep 4, 2019 · 6 comments

Comments

@Junho2009
Copy link

Junho2009 commented Sep 4, 2019

这些接口,跟使用TArray有不少差异,如:
1、接口对index的起始索引的理解,是从1开始的。
2、有些接口名与TArray原生接口名不一致,如“Num”->“Length”。
请问这样的设计是基于什么考虑呢?这样对原有代码的兼容性其实不太友好呢,使用时也要比较注意,需要把这个本在C++层是FScriptArray的对象、当做另一个LuaArray来用。

@rowechien
Copy link
Collaborator

  1. 索引从1开始是按Lua默认的下标起始设定的,之前有个配置,控制是从0开始还是从1开始,但我们观察项目的使用习惯都是从1开始,所以也就将这个配置去掉了,固定从1开始。但,我个人是习惯从0开始的。
  2. 选择Length而不是Num,是为了和UKismetArrayLibrary中的"Length"一致,也就是和蓝图中的Array操作一致,但也有可能有些API没有严格保持一致。目前阶段已经有很多项目在使用了,像取Array长度这种操作肯定是很普遍的,所以也不会再去改变这种API。
  3. FScriptArray是Array在引擎侧的表达,它没有元素类型信息,你看它的成员函数就知道,仅仅用它是无法满足需求的,你可以再看看代码。

@Junho2009
Copy link
Author

  1. 索引从1开始是按Lua默认的下标起始设定的,之前有个配置,控制是从0开始还是从1开始,但我们观察项目的使用习惯都是从1开始,所以也就将这个配置去掉了,固定从1开始。但,我个人是习惯从0开始的。
  2. 选择Length而不是Num,是为了和UKismetArrayLibrary中的"Length"一致,也就是和蓝图中的Array操作一致,但也有可能有些API没有严格保持一致。目前阶段已经有很多项目在使用了,像取Array长度这种操作肯定是很普遍的,所以也不会再去改变这种API。
  3. FScriptArray是Array在引擎侧的表达,它没有元素类型信息,你看它的成员函数就知道,仅仅用它是无法满足需求的,你可以再看看代码。

我的意思是,lua中使用TArray,直观想法就当它是一个原生TArray实例来用的,然而在lua中使用这个实例的方式(下标、接口名),与C++中使用的方式不一致,就会困惑。

@rowechien
Copy link
Collaborator

@Junho2009 原因已经写过了

@rowechien
Copy link
Collaborator

或者你可以加个导出的函数:
Snipaste_2019-09-04_10-45-07

@jimtang
Copy link

jimtang commented Nov 10, 2022

@rowechien 虽然Close了,借楼问一下,{"ToTable", TArray_ToTable} 这个接口在UnLua里可以用,但是生成的table却不支持mytable:remove(i)的调用?非得写成table.remove(mytable, i)这种样式才行。

@xuyanghuang-tencent
Copy link
Collaborator

lua本身就不支持t:remove(i)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants