递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 计次循环()应该增加个不会重复调用循环次数的计次循环2()

[复制链接]

429

主题

2656

帖子

9045

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9045
跳转到指定楼层
楼主
发表于 2025-6-10 16:24:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shuimiao 于 2025-6-10 16:26 编辑

就是他计次循环传入的循环次数,如果是个方法返回值,他每循环一次都会执行一次方法,增加消耗不说,还会可能每次返回结果不一样,导致最终循环次数不确定。如果每次都要自己先将方法返回值给一个变量再传入计次循环就麻烦了,计次循环是高频使用的。所以,只要增加个计次循环2,稍微改动下代码,他就只会执行一次获取循环次数。
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 计次循环 <公开 静态 注释 = "将子语句体循环指定所指定的次数." 注释 = "在子语句体中,可以使用"取循环索引"方法取回当前循环索引值(0到"循环次数"参数值-1)."
  3.         @嵌入式方法 = "name = counter\r\nhas_loop_body = true">
  4. 参数 循环次数 <类型 = 整数 编辑时信息 = "11AA99, 0, 0, 0">
  5. {
  6.     @ for (INT_P __vol_counter_index = 0; __vol_counter_index < @<循环次数>; __vol_counter_index++)
  7. }
复制代码
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 计次循环2 <公开 静态 注释 = "将子语句体循环指定所指定的次数." 注释 = "在子语句体中,可以使用"取循环索引"方法取回当前循环索引值(0到"循环次数"参数值-1)."
  3.         @嵌入式方法 = "name = counter\r\nhas_loop_body = true">
  4. 参数 循环次数 <类型 = 整数 编辑时信息 = "11AA99, 0, 0, 0">
  5. {
  6.     @ int i=@<循环次数>; for (INT_P __vol_counter_index = 0; __vol_counter_index < i; __vol_counter_index++)
  7. }
复制代码

我自己能改,可是在官方库文件里改,下次升级就尴尬了。把改动代码放自己文件,那他配套的取循环索引()也要搞一个,我只想改计次循环2(),其他配套的方法照旧。


回复

使用道具 举报

429

主题

2656

帖子

9045

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9045
来自 11#
 楼主| 发表于 2025-6-10 22:29:48 | 只看该作者
参考各位指点,我搞出了一个方法,定向计次循环,是否逆向直接在第二个参数中设置为真,并且还额外支持取回计次总数、计次初始值

<火山程序 类型 = "通常" 版本 = 1 />

方法 定向计次循环 <公开 静态 注释 = "根据条件来决定是正向计次还是逆向计次。将子语句体循环指定所指定的次数."
        注释 = "在子语句体中,可以使用\"取循环值\"方法取回当前循环索引值(0到\"循环次数\"参数值-1)." 注释 = "在子语句体中,可以使用\"取循环数\"方法取回当前循环次数"
        注释 = "在子语句体中,可以使用\"取循环初值\"方法取回当前循环一开始的循环索引值(逆向时是循环次数-1否则是0)" 折叠
        @嵌入式方法 = "name = counter\r\nhas_loop_body = true">
参数 循环次数 <类型 = 整数 编辑时信息 = "11AA99, 0, 0, 0">
参数 逆向 <类型 = 逻辑型 注释 = "假为正向,真则为逆向" @默认值 = 假>
{
    @ for (INT nx = @<逆向>?1:0, __vol_counter_sum_sm = @<循环次数>,  __vol_counter_index_sm = nx?__vol_counter_sum_sm - 1:0; nx?__vol_counter_index_sm >= 0: __vol_counter_index_sm < __vol_counter_sum_sm;nx?__vol_counter_index_sm--: __vol_counter_index_sm++)
}

方法 取循环值 <公开 静态 类型 = 整数 注释 = "  只能在\"正向计次\"/\"逆向计次\"语句的子语句体中使用,用作取回当前循环索引值,"
        注释 = "所取回的值范围为从0到\"正向计次\"调用语句中所指定的\"循环次数\"参数值-1."
        注释 = "  如果有多层\"正向计次\"/\"逆向计次\"嵌套,本方法将返回所处最近层\"正向计次\"/" 注释 = "\"逆向计次\"的索引值." 折叠
        @嵌入式方法 = "parent = \"counter\"">
{
    @ __vol_counter_index_sm
}

方法 取循环数 <公开 静态 类型 = 整数 注释 = "  只能在\"正向计次\"/\"逆向计次\"语句的子语句体中使用,用作取回当前循环总数" 折叠
        @嵌入式方法 = "parent = \"counter\"">
{
    @ __vol_counter_sum_sm
}

方法 取循环初值 <公开 静态 类型 = 整数 注释 = "  只能在\"正向计次\"/\"逆向计次\"语句的子语句体中使用,用作取回当前循环的初始值" 折叠
        @嵌入式方法 = "parent = \"counter\"">
{
    @ nx?__vol_counter_sum_sm-1:0
}
回复

使用道具 举报

429

主题

2656

帖子

9045

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9045
沙发
 楼主| 发表于 2025-6-10 16:35:21 | 只看该作者
本帖最后由 shuimiao 于 2025-6-10 22:32 编辑

忽略本楼,看置顶回复
回复

使用道具 举报

56

主题

511

帖子

3991

积分

贵宾

火山官方交流群:831858564

Rank: 9Rank: 9Rank: 9

积分
3991
QQ
板凳
发表于 2025-6-10 17:03:41 | 只看该作者
我是觉得 易语言的计次循环就挺好的 可能内部处理了很多东西吧  不行就用循环 就好了
回复

使用道具 举报

93

主题

1012

帖子

5485

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5485
地板
发表于 2025-6-10 17:44:43 | 只看该作者
这样并不行,两个循环的话会报错声明了两个i变量,要多添加一个作用域才可以~
回复

使用道具 举报

29

主题

2357

帖子

8404

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8404
5#
发表于 2025-6-10 17:53:32 | 只看该作者
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 计次循环2 <公开 静态 @嵌入式方法 = "name = counter\r\nhas_loop_body = true">
  3. 参数 循环次数 <类型 = 整数 编辑时信息 = "11AA99, 0, 0, 0">
  4. {
  5.     @ for (INT_P __vol_counter_index = 0, __vol_counter_taget = @<循环次数>; __vol_counter_index < __vol_counter_taget; __vol_counter_index++)
  6. }
复制代码
回复

使用道具 举报

76

主题

1179

帖子

5349

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5349
6#
发表于 2025-6-10 17:54:22 | 只看该作者
在for里面就行吧, for(size_t i = 0, ii = @<循环变量>; i < ii; i++)
回复

使用道具 举报

460

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
44293
7#
发表于 2025-6-10 18:59:42 | 只看该作者
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

429

主题

2656

帖子

9045

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9045
8#
 楼主| 发表于 2025-6-10 21:50:05 | 只看该作者
回复

使用道具 举报

429

主题

2656

帖子

9045

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9045
9#
 楼主| 发表于 2025-6-10 21:50:29 | 只看该作者
小蜗牛 发表于 2025-6-10 17:44
这样并不行,两个循环的话会报错声明了两个i变量,要多添加一个作用域才可以~ ...

说得对,谢谢提醒
回复

使用道具 举报

26

主题

484

帖子

4346

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4346
QQ
10#
发表于 2025-6-10 22:27:46 | 只看该作者
循环()也是同样的问题
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 08:26 , Processed in 0.099426 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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