递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] ★★★火山PC的参考(不知道怎么叫,C++是叫指针)★★★

[复制链接]

21

主题

290

帖子

1287

积分

金牌会员

Rank: 6Rank: 6

积分
1287
跳转到指定楼层
楼主
发表于 2024-4-6 14:16:26 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
  • 程序中定义了几十个窗口, 程序启动时候就需构造要全部窗口类, 窗口类里面会使类对象(比如Curl类或自定义类), 那么也要构造, 想想如果是个大工程, 一开始连个窗口都没显示呢, 就构造这么多东西了,窗口不创建也没必要去构造对不对, 虽说现在CPU强劲, 内存量大, 也不能这么浪费吧
  • 从一个数组中取个成员放到局部变量操作时, 这个成员如果是类对象, 放到局部变量后只是个复制品, 我们操作这个局部变量是修改不了那个成员的对象数组的成员,想要挂接事件、调用函数、修改成员都要给成员取出来,单一层的话还能凑乎,层数多了简直是地狱不停地取成员,火山本来就是将复杂的东西简单化,现在成了简单的东西更复杂了

-----------------------------------------------------------------------------------
例如我想写一个带分组的自定列表框
第一层组件布局器,里面放个数组用来存分组
    第二层分组类,里面放个数组用来存列表成员
        第三层列表成员类,1个编辑框和1个矩形类(可能还有其他)

写到最后我想操作第I个分组里的第J个成员里的矩形,我需要这么写
控件名.元素组.取成员(I).元素组.取成员(J).矩形.左边 = 1
控件名.元素组.取成员(I).元素组.取成员(J).矩形.顶边 = 1
上面只是例子实际还要操作其他, 每次操作都要不停地取取取

如果有了局部参考的话, 我们只需取出一次
矩形 = 控件名.元素组.取成员(I).元素组.取成员(J).矩形
矩形.左边 = 1
矩形.顶边 = 1
-------------------------  局部参考实现  ---------------------------
实现局部变量参考打钩后, 将该变量变为指针, 以矩形为例
矩形 矩形类 参考
翻译后如下
矩形类 *矩形
----------------
矩形 = 控件名.元素组.取成员(I).元素组.取成员(J).矩形
翻译后如下
矩形 = &控件名.元素组.取成员(I).元素组.取成员(J).矩形
----------------
矩形.左边 = 1
矩形.顶边 = 1
矩形.重置(1,1,1,1)
翻译后如下
矩形->左边 = 1
矩形->顶边 = 1
矩形->重置(1,1,1,1)
-------------------------  动态窗口实现  ---------------------------
定义窗口时使用参考, 因为是指针可以为空
窗口A 我的窗口类 参考
翻译为
我的窗口类 * 窗口A
----------------
当窗口需要显示时
窗口A = 我的窗口类(参数1, 参数2, 参数3)
翻译为
窗口A = new 我的窗口类(参数1, 参数2, 参数3)
-------
窗口A.创建主窗口(参数...)
翻译为
窗口A->创建主窗口(参数...)
-------------------------  最后  ---------------------------
参考定义时变量多了个 *, 访问时给.换成->
这样函数返回如果是 @视窗.返回参考 = 真 的话也能完美接收
既能实现局部变量随意存取, 挂接事件, 又能实现类的动态创建
就算有1000个窗口,我不创建显示你, 你就不能浪费内存和CPU
另外类的动态创建接收构造参数是个问题, 因为火山的类里面已经有无参的构造函数了

此时涛哥要是能给函数重载和符号重载搞出来岂不是更美,从此火山PC再无短板了



回复

使用道具 举报

21

主题

290

帖子

1287

积分

金牌会员

Rank: 6Rank: 6

积分
1287
32#
 楼主| 发表于 2024-4-11 12:20:35 | 只看该作者
qaz2428119 发表于 2024-4-11 09:24
火山不支持 -> 符号 也就没法支持参考

是的, 希望涛哥能改的支持吧
回复

使用道具 举报

25

主题

489

帖子

1734

积分

金牌会员

Rank: 6Rank: 6

积分
1734
31#
发表于 2024-4-11 09:24:21 | 只看该作者
wangvoldp 发表于 2024-4-9 23:54
您所说不支持也是因为访问成员时成员必须->访问吧,
发现是参考的成员访问, 给.换成->行不通么?
对参考对 ...

火山不支持 -> 符号 也就没法支持参考
回复

使用道具 举报

21

主题

246

帖子

2141

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2141
30#
发表于 2024-4-10 09:19:23 | 只看该作者
建议考虑添加一下子
回复

使用道具 举报

21

主题

290

帖子

1287

积分

金牌会员

Rank: 6Rank: 6

积分
1287
29#
 楼主| 发表于 2024-4-9 23:54:59 | 只看该作者
qaz2428119 发表于 2024-4-9 21:51
局部参考没法实现这个功能, 因为参考是指针(火山不支持指针), 利用引用符,倒是可以实现,不过局部变量使用引 ...
局部参考没法实现这个功能, 因为参考是指针(火山不支持指针)

您所说不支持也是因为访问成员时成员必须->访问吧,
发现是参考的成员访问, 给.换成->行不通么?
对参考对象的直接访问前面需要*, 比如int
回复

使用道具 举报

25

主题

489

帖子

1734

积分

金牌会员

Rank: 6Rank: 6

积分
1734
28#
发表于 2024-4-9 21:51:19 | 只看该作者
局部参考没法实现这个功能, 因为参考是指针(火山不支持指针), 利用引用符,倒是可以实现,不过局部变量使用引用符,限制很大,需要定义时就要确定引用那个对象,没法动态引用对象
回复

使用道具 举报

36

主题

182

帖子

1677

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1677
27#
发表于 2024-4-9 21:09:18 | 只看该作者
置指针内容(取变量地址(变量),文本型,“123”)
置指针内容(取变量地址(变量),整数型,12)
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 置指针内容 <公开 静态 注释 = "变更指针位置内容" @嵌入式方法 = "">
  3. 参数 欲操作指针 <类型 = 变整数>
  4. 参数 指针数据类型 <@需求类型 = 数据类型 @匹配类型 = 所有类型>
  5. 参数 欲写入数据 <注释 = "提供所欲写入的数据,必须与调用"置指针"方法所提供数据的数据类型相同或匹配." @匹配类型 = 所有类型>
  6. {
  7.     @ *(@<指针数据类型> *)((INT_P)@<欲操作指针>) = @<欲写入数据>;
  8. }
复制代码
回复

使用道具 举报

50

主题

509

帖子

2052

积分

金牌会员

Rank: 6Rank: 6

积分
2052
26#
发表于 2024-4-8 20:46:51 | 只看该作者
Xelloss0618 发表于 2024-4-8 20:19
C++、JAVA、Golang本身就有差别。
JAVA 和 Golang 的变量参考,都可以先定义后赋值,还可以多次重新赋值, ...

楼主是想说,为何不给来他来个指针型变量.要他打这么多中文字来写代码很痛苦!!
回复

使用道具 举报

26

主题

1553

帖子

5803

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5803
25#
发表于 2024-4-8 20:19:25 | 只看该作者
C++、JAVA、Golang本身就有差别。
JAVA 和 Golang 的变量参考,都可以先定义后赋值,还可以多次重新赋值,这算是带垃圾回收的特色。
C++就只能在定义参考变量时初始化赋值,而且不能重新赋值。
回复

使用道具 举报

21

主题

290

帖子

1287

积分

金牌会员

Rank: 6Rank: 6

积分
1287
24#
 楼主| 发表于 2024-4-8 19:02:18 | 只看该作者
呵呵仙8 发表于 2024-4-8 12:48
我是业余的.首先,我没了解火山的代码在解释为c++代码再编译时,会不会简化到和c++语法一样或生成EXE会不会 ...

你说我想要C++就当是吧,我也不再给你解释了, 除了PC都支持参考,我建议PC也支持参考是动了您的什么蛋糕么?
这种想法.我看你还是不要希望了
安卓都有的, 想让pc也有,怎么就不报希望了呢.




回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-18 04:20 , Processed in 0.106383 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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