递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[类库封装] 火山PC语法扩充和语法糖

[复制链接]

6

主题

64

帖子

2495

积分

金牌会员

Rank: 6Rank: 6

积分
2495
跳转到指定楼层
楼主
发表于 2022-9-27 03:11:15 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 龙纹 于 2023-2-6 22:22 编辑

这个类库为火山PC提供了匿名函数(lambda), 3 个常用高阶函数, 过滤(filter)、映射(map)、折叠(fold), 语法糖则是"创建数组类"与"数组连续加入成员".
其实这个类库写了挺久了, 也写了非常多, 远不止这几个函数, 编写过程不是很顺利, 主要是因为语法, 其次为迭代器, 因为火山数组没有迭代器, 导致不能使用C++标准库算法, 后来我魔改了火山核心库, 给数组添加了迭代器, 虽然结果还行, 但无法发布出来使用, 因此我重新封装了上述部分.

更新日志:
23-2-6
新增了一系列数组类v, 例如 整数数组类v、文本数组类v,还有对应的二维数组类v,在此之上提供了更多方便的函数,文本_分行,文本_分块等等
新增了数组排序和对二元组与哈希表的增强操作, 相关的可以查看例子中的"测试哈希表到数组"方法
23-2-1
增加了 <algorithm> 头文件引用, 感谢 @ziv 的反馈
23-1-31
增加了新的方法:具名函数、具名函数2、FP返回、传递具名函数、调用具名函数
11-20
增加了连续加入数组方法
10-30
连续加入成员方法现在支持字节集数组
9-28
增加了一系列操作数组的方法并更新了对应例程,具体为:
            提取、提取_直到、提取_尾、提取_尾_直到、删除、删除_直到、删除_尾、删除_尾_直到
            求和、求最大值、求最小值、是否相同
创建数组类 更名为 创建数组, 数组连续加入成员 更名为 连续加入成员

以下为使用方法示例
过滤:

映射:

折叠:



我是从函数式编程中学习到的这些, 正确的使用可以简化代码, 考虑到很多人不了解函数式编程, 我写了详细例子和图解来帮助理解和使用这3个高阶函数, 都在压缩包内.
压缩包: FP模块+例子+图解.zip (637.57 KB, 下载次数: 89)















评分

参与人数 2金钱 +6 收起 理由
小蜗牛 + 1 火山需要的就是你们这些大佬
kyozy + 5 很给力!

查看全部评分

本帖被以下淘专辑推荐:

火山PC交流群: 748413192
回复

使用道具 举报

6

主题

64

帖子

2495

积分

金牌会员

Rank: 6Rank: 6

积分
2495
16#
 楼主| 发表于 2023-2-6 22:28:55 | 只看该作者
关于 2-6 新增了数组排序和对二元组与哈希表的增强操作
本论坛的一个帖子:【一道题】如何在10万个名字中找出多少是重复的?
使用"FP扩展函数"类库核心代码不超过10行就解决了,实现如下:

输出:


更具体的可以下载模块和例子, 完整代码在"测试哈希表到数组"方法中
火山PC交流群: 748413192
回复

使用道具 举报

31

主题

549

帖子

3238

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3238
15#
发表于 2023-2-1 21:26:09 | 只看该作者
感谢分享。。。。支持支持
Inverse
回复

使用道具 举报

6

主题

64

帖子

2495

积分

金牌会员

Rank: 6Rank: 6

积分
2495
14#
 楼主| 发表于 2023-2-1 15:25:34 | 只看该作者
ziv 发表于 2023-2-1 10:12
"min": 不是 "std" 的成员
#include

已修复, 增加了这个头文件引用.
可能是环境原因?我并没有这个报错, 你添加这个头文件引用之后现在运行例子正常吗?
火山PC交流群: 748413192
回复

使用道具 举报

4

主题

223

帖子

3418

积分

论坛元老

Rank: 8Rank: 8

积分
3418
13#
发表于 2023-2-1 10:12:07 | 只看该作者
matali 发表于 2022-10-22 20:31
安装你的模块后,最新版火山调试运行你的例子出错

"min": 不是 "std" 的成员
#include <algorithm>
回复

使用道具 举报

6

主题

64

帖子

2495

积分

金牌会员

Rank: 6Rank: 6

积分
2495
12#
 楼主| 发表于 2023-1-31 21:24:54 | 只看该作者
根据火山12-12更新包提供的语法支持, 新增了具名函数, 简单的说就是创建一个可以多次复用的函数.
配合此类库提供的一些函数, 掌握之后或许可以改变你写代码的方式.
另外值得一提的是, 根据具名函数的编写方式, 或许可以把C++20提供的协程支持较好的封装到火山中使用.
火山PC交流群: 748413192
回复

使用道具 举报

0

主题

9

帖子

44

积分

新手上路

Rank: 1

积分
44
11#
发表于 2022-12-12 16:44:41 | 只看该作者

支持,
学习一下
回复

使用道具 举报

6

主题

64

帖子

2495

积分

金牌会员

Rank: 6Rank: 6

积分
2495
10#
 楼主| 发表于 2022-10-23 08:33:46 | 只看该作者
matali 发表于 2022-10-22 20:31
安装你的模块后,最新版火山调试运行你的例子出错

麻烦把报错截图发一下, 尽量截全, 或者看我个人签名, 进裙聊, 这样效率高一些
火山PC交流群: 748413192
回复

使用道具 举报

15

主题

343

帖子

3795

积分

论坛元老

Rank: 8Rank: 8

积分
3795
9#
发表于 2022-10-22 20:31:26 | 只看该作者
本帖最后由 matali 于 2022-10-22 21:19 编辑

安装你的模块后,最新版火山调试运行你的例子出错
回复

使用道具 举报

24

主题

440

帖子

3731

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3731
QQ
8#
发表于 2022-9-30 16:57:26 | 只看该作者
学习一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-27 02:15 , Processed in 0.109886 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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