递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 996|回复: 16
打印 上一主题 下一主题

[其它] 浅谈火山的结构体

[复制链接]

228

主题

1712

帖子

7078

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
7078
QQ
跳转到指定楼层
楼主
发表于 6 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开篇前,先说明下我是没有使用过易语言的,知道易语言是还是13年那会,游戏比较流行修改内存之类的。但那个时候只在网咖中安装写了个调试输出就没兴趣往下学了。

通过近期我想研究中文编程工具时,找到开源的中文编程工具源码基本是易语言写的,而我又不会易语言。

这里可能会有提出疑问的,易语言还不简单,火山都能学会易语言还不是轻松上手。

易语言给我的感受是简单上手又不限制用户的发展,如DLL在易语言中就非常容易整,同样的微软API,在易语言中非常好整,在火山中使用@视窗.输入+@输出名可能还会出现问题。当然使用嵌入式是可以轻松解决的。


这里浅谈我自己的看法,不涉及任何人。如有雷同纯属巧合。


火山用户百分之20是易语言转过来的,百分之10是自学原生语言之后或者直接知道火山工具时直接转过来的。
对于易语言用户来说,易语言代码移植到火山中是非常简单的。因为大部分转过来的易语言用户都系统学习过系统函数知道他们的作用和最终实现的结果。
对于直接上手火山的用户来说,火山中虽然函数名和易语言的函数名大部分一致,但有些就算是同样的名字,调用和传参数是千差万别。最终会导致看到易语言代码转到火山中去是困难重重。

这里可能又有提出疑问的,既然想把易语言代码移植到火山,自学一下易语言不就行了,网上视频教程和帖子和文档多的是。基本一个多星期就差不多了。

想到这个层面的,恭喜你打败百分之98的人。但事物都是有两面性的,学习的过程当中难免会沉迷进去,就跟小说中的主角一样,扮演着扮演着就沉迷其中了,有可能学习易语言的过程当中,反而喜欢上了易语言的操作。

回归正题,易语言中的结构体是自定义数据类型,火山中的结构体需要使用@视窗.结构类属性才行。我呢在整这个易语言中的结构体时就被易语言的特性吸引了,他直接就写个名字,里面有数据的话写个名字和数据类型就行了。


说这么多不是为了提建议或者教吴总做事,而是作为自己学习火山之后又移植易语言代码过程当中的体会做个笔记。




火山视窗封装视频教程
回复

使用道具 举报

31

主题

338

帖子

2918

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2918
沙发
发表于 6 天前 | 只看该作者
火山的结构体是为了兼容c++,毕竟大部分结构体都来自c++的头文件,这样火山的结构体和c++的才能互相转换.易语言的不行.你真正写程序,用到c++的结构体的时候才会理解.
回复

使用道具 举报

228

主题

1712

帖子

7078

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
7078
QQ
板凳
 楼主| 发表于 6 天前 | 只看该作者
cxz7411 发表于 2025-4-15 16:27
火山的结构体是为了兼容c++,毕竟大部分结构体都来自c++的头文件,这样火山的结构体和c++的才能互相转换.易语 ...

我没说火山的结构体不好,而是火山的结构体在我理解的范围中,使用@符号是封装用户需要掌握的。在兼职手册中也再三强调封装人员尽量不使用@符号相关的写例子。

但通过视窗的结构体和火山服务器中的结构体。他们都使用了@符号相关的属性进行扩展才能支持。在官方例子中大量使用了@本地类来写服务器

如视窗的是@视窗.结构类 。服务器的是@本地类
火山视窗封装视频教程
回复

使用道具 举报

75

主题

1129

帖子

5112

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5112
地板
发表于 6 天前 | 只看该作者
其实无论是火山视窗, 还是c++, 结构体和类都是一回事.
class 类1{int 成员方法();};
struct 结1{int 成员方法();};
这两唯一的区别就是`结1`的成员是默认公开的, `类1`的成员是默认私有的.

乃至于:
class 类1: public 结1{};
让类继承自结构体也是完全可行的的.

所以我一直觉的吴总在火山里把结构体搞的这么特殊, 完全没必要.
弄个关键词的替换选项就行.
回复

使用道具 举报

228

主题

1712

帖子

7078

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
7078
QQ
5#
 楼主| 发表于 6 天前 | 只看该作者
hcwanz 发表于 2025-4-15 16:55
其实无论是火山视窗, 还是c++, 结构体和类都是一回事.
class 类1{int 成员方法();};
struct 结1{int 成员方 ...

好像有错别字把,我学的C++好像是struct 结构体中的成员默认是公开的,class 类中的成员默认是 private 私有的。从C++之父写的书籍当中记载,结构体和类是没有本质区别的,无非是成员权限不一样。
火山视窗封装视频教程
回复

使用道具 举报

7

主题

118

帖子

1133

积分

金牌会员

Rank: 6Rank: 6

积分
1133
6#
发表于 6 天前 | 只看该作者
现在的火山普通人搬不了C的代码而且易语言的也不难搬来火山
回复

使用道具 举报

28

主题

2189

帖子

7924

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7924
7#
发表于 6 天前 | 只看该作者
都是最早的火山设计导致的问题,一开始火山里的所有对象,都要求继承火山的对象类。
继承了类,自然就写不出纯粹的结构体,只有用 @视窗.结构类 这个属性打补丁,但它还不是结构体,只是在类型内部给你搞了个不可见的结构体类型,还需要用函数转换。

火山要求继承对象类,也不是什么为了跟C++兼容,什么都拿对象类套了一层,自然就不是C++本身的类型了,也徒增了不少封装的难度。

现在本地结构、本地类等别名类型,都是封装go之后才加的。
回复

使用道具 举报

228

主题

1712

帖子

7078

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
7078
QQ
8#
 楼主| 发表于 6 天前 | 只看该作者
先生 发表于 2025-4-15 16:59
现在的火山普通人搬不了C的代码而且易语言的也不难搬来火山

那你肯定会易语言,我文中也提到过,对于学过易语言的用户来说简单的很。
火山视窗封装视频教程
回复

使用道具 举报

228

主题

1712

帖子

7078

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
7078
QQ
9#
 楼主| 发表于 6 天前 | 只看该作者
Xelloss0618 发表于 2025-4-15 16:59
都是最早的火山设计导致的问题,一开始火山里的所有对象,都要求继承火山的对象类。
继承了类,自然就写不 ...

X大说的比较中肯。
火山视窗封装视频教程
回复

使用道具 举报

54

主题

470

帖子

3783

积分

贵宾

火山官方交流群:831858564

Rank: 9Rank: 9Rank: 9

积分
3783
QQ
10#
发表于 6 天前 | 只看该作者
首先要说一句 不是20%从易语言  应该是80%吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-4-21 03:34 , Processed in 0.083431 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表