关于小程序 js if elsee的小问题

苹果/安卓/wp
积分 982, 距离下一级还需 393 积分
权限: 自定义头衔, 签名中使用图片, 隐身
道具: 涂鸦板, 彩虹炫, 雷达卡, 热点灯, 显身卡, 匿名卡, 金钱卡, 抢沙发下一级可获得
权限: 设置帖子权限道具: 变色卡, 提升卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 变色卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
开心签到天数: 7 天连续签到: 1 天[LV.3]偶尔看看II
本帖最后由 wanghaidong918 于
09:14 编辑
%let kk=%eval(&m-1);
%put &m;
%put &
data final_result&m.;
if &m^=1 then set final_result&kk. fund.mine_mean&m.;
else set fund.mine_mean&m.;
复制代码
这段程序的目的是希望能够通过循环批量的将数据集纵向合并到一起,但是第一个数据集 也就算是final_result1 总是没法合并进去,请问有哪位大神能够帮助我解决这个问题吗?
请把循环补完,把宏写全。否则这样的程序不太好读。另外最好把实际的datasets用简单的test datasets来代替,方便大家测试,因为不是每个人都有"fund"这样的library的。我随手写了个简单的循环,没有发现什么问题。
本帖被以下文库推荐
& |主题: 2385, 订阅: 29
请把循环补完,把宏写全。否则这样的程序不太好读。另外最好把实际的datasets用简单的test datasets来代替,方便大家测试,因为不是每个人都有&fund&这样的library的。data fin1;x=1;
data fin2;x=2;
data mean1;x=3;
data mean2;x=4;
data mean3;x=5;
%
%let m=3;
%do %until(&m=1);
%let kk=%eval(&m-1);
%put &m;
%put &
data fin&m.;
if &m^=1 then set fin&kk. mean&m.;
else set mean&m.;
%let m=&
%
%
%复制代码我随手写了个简单的循环,没有发现什么问题。
总评分:&经验 + 3&
论坛币 + 3&
寒冰凤凰 My blog: http://blog.sina.com.cn/u/
zhangzachary 发表于
请把循环补完,把宏写全。否则这样的程序不太好读。另外最好把实际的datasets用简单的test datasets来代替, ...谢谢,谢谢你的全部意见~ 我总是着急找答案,忽略了其他人的感受 。。 嘿嘿
zhangzachary 发表于
请把循环补完,把宏写全。否则这样的程序不太好读。另外最好把实际的datasets用简单的test datasets来代替, ...我的一小段程序确实容易引起误解,其实我想实现的目标是在我定义宏每次生成新的数据集mine_mean&m 的时候,就将这个新的数据集中的数据放入我想final_result中,其实先用宏全部生成,在全部用set纵向合并也是可以的,但是比较的累赘,而且不便修改参数,所以我的做法是用两个数据集倒腾,其中之一是final_result,另外一个是mine_mean,具体做法是如果宏生成了第一个数据集mine_mean1,就直接赋给final_result,也就是
if &m=1,set mine_mean&m;
如果不是第一个数据集,那么就直接将上一次宏生成的数据集final_result&kk&&(这里kk提前设置为&m-1)还有mine_mean&m(也就是新生成的数据集)一起set进去,形成纵向合并,
比如 mine_mean1&&为 1& &1& & 1 ;那么final_result1应该是&&1&&1& &1;mine_mean2 是 2& &2& &2&&;那么 final_result2 应该是& & 1& & 1& & 1
& && && && && && && && && && &2& & 2& &&&2
不知道清楚否,但是我现在的程序只能够实现从&m=2之后的部分,也就是mine_mean1根本没有被set进去,因为我得完整程序很长,里面涉及的数据集就更多 、更繁琐了,所以没法讲清楚代码。
请您帮我看一哈(呼。。。 写好多。。。)
sophiesdaisy 发表于
我的一小段程序确实容易引起误解,其实我想实现的目标是在我定义宏每次生成新的数据集mine_mean&m 的时候 ...把你的if then else加上%
寒冰凤凰 My blog: http://blog.sina.com.cn/u/
zhangzachary 发表于
把你的if then else加上%==!
太谢谢了,菜鸟一只,自学成才,所以没有养成很好的习惯。。。
zhangzachary 发表于
把你的if then else加上%大师,你好,我按照您的指点做了,但是报错:文件 WORK.RUN.DATA 不存在
sophiesdaisy 发表于
大师,你好,我按照您的指点做了,但是报错:文件 WORK.RUN.DATA 不存在%macro .....;
data ...&&;
%if .. %then %
寒冰凤凰 My blog: http://blog.sina.com.cn/u/
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师用ifelse语句解决奖金发放问题
用ifelse语句解决奖金发放问题
相关内容:
编程爱好者
WEB编程开发一蓑烟雨任平生 也无风雨也无晴
没有躲过的坑--有if就要有else(一定成对)
我们都很擅长流程控制,能写出很好很复杂的if语句。但是有时过于兴奋,更多的是过于自信而只写了if,而没有写else。
这是一个争论不休的话题,很多人,很多大师都认为有的情况下可以不写else,只写if。
支持 if 和 else 成对出现的人认为:不怕一万 就怕万一
认为 if 和 else 没必要成对出现的人认为:不便于理解,太多没用的东西。
我之前觉得也必须非要这样成对,但是今天在工程中遇到了问题。就是当if不成立的时候,没有相应的处理。
人非圣贤,硬件也不是永远精确的,所以我还是建议成对的使用if和else.
还有呢,不管是if还是else,处理的代码一定要加{},即使处理只有一行代码。
更重要的是:
条件控制是编程中与生俱来的一种结构,但对于很多人来说,除了给带来麻烦外,没有发现任何的用处。一次又一次,不断发现,越少的if语句,越少的 switch语句,越少的循环,就会是越好的代码。通常这其中的原因是程序员用编程语言实现了更好的抽象归纳。他们并不是有意识的避免使用控制结构。但他 们确实做到了这些。
如果是使用一种面向对象编程语言,我们可以用多态(polymorphism)来代替switch。同样的技巧也能用在 if语句上,但如果逻辑太简单,这样做就有点得不偿失。当使用一种有函数式特征的编程语言时,大部分的循环执行任务我们都可以用 map,filter,fold等实现。控制结构最终从代码中消失,这是对代码大有好处的事。
还有很长的路要走!!
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!不要if else的编程_百度经验
&&&&&&&&&台式机不要if else的编程
百度经验:jingyan.baidu.com条件控制是编程中与生俱来的一种结构,但对于我来说,除了给我带来麻烦外,没有发现任何的用处。一次又一次,我不断发现,越少的 if 语句,越少的 switch 语句,越少的循环,就会是越好的代码。通常这其中的原因是程序员用编程语言实现了更好的抽象归纳。他们并不是有意识的避免使用控制结构。但他们确实做到了这些。  如果是使用一种面向对象编程语言,我们可以用多态(polymorphism)来代替 switch。同样的技巧也能用在 if 语句上,但如果逻辑太简单,这样做就有点得不偿失。当使用一种有函数式特征的编程语言时,大部分的循环执行任务我们都可以用 map,filter,fold 等实现。控制结构最终从代码中消失,这是对代码大有好处的事。  条件控制结构的问题是,它很容易导致你把代码修改的乱七八糟。让我们看看下面一个简单的 if 语句:if... ...else... end  代码中所有打省略号的地方都是你可以不断添加代码的地方。这些地方可以访问 if 外面的变量。这很容易造成高耦合。更糟糕的是,人们会习惯性的在条件控制里嵌套条件。我见过的最糟糕的代码,里面的嵌套之深的就像是噩梦里的无底洞。我想,条件控制结构的真正问题所在是,它把各种任务混合到了一起。我相信,你能从某种角度上看出,它是和任务单一编程原则相冲突的。  我们该怎么做?我们可不可以完全不要控制结构?我想不行,但我们可以做一些实验来看看如何能减少对它们的使用。通常这样做会让我们从中学到一些新技巧,让我们的代码更整洁。  不久前,我开发了一些 Ruby 程序,我需要写一个‘take’函数,用它从一个数组里取出一些元素。Ruby 里有一些针对 Enumerable 的这样的函数,但我需要一些特殊的功能。如果我需要的数组的大小超出了目标数组的大小,需要把多余的数组空间都置为0。  这看起来可以用简单的 if 语句实现:def padded_take ary, nifn &=ary.length ary.take (n)elseary+ [0] * (n -ary.length) end end  让我们认真的看一看这段代码。它没有向我们显示任何填充动作的信息,没有显示数组跟填充的关系。如果认真看,可以看出其中的逻辑,但我们看不出这段代码的意图。  我们引入一些函数来让这段代码更清楚些,使用 guard 语句来简化 if 语句:def padded_take ary, nreturnary.take (n) unless needs_padding?(ary, n) ary+pad (ary, n) end  这个短小精悍,但不是更简单——我们可以使用一个 null 对象来去掉条件语句。空的数组就是很好的 null 对象。让我们在来一次。  我们不需要用一个条件语句来计算填充的长度。这个长度我们可以取两个数组中的最大值,如果我们想要的长度超出了数组的长度,填充的长度就是它们的差值:pad_length = [0, n - ary.length].max  有了这个长度,我们可以先填充数组,然后取出我们想要的元素:def pad ary, n pad_length= [0, n -ary.length].max ary+ [0] *pad_length end  于是,我们可以这样定义取出动作:def padded_take ary, n pad (ary, n) .take (n) end  我们通过先进行填充从而避免了使用 if 语句。当然,有时候填充的是一个空数组。  我不想去争论这样的写法是否比最初的 if-then-else 代码更简单,但现在的代码的意图更清晰了,而且我不认为这种策略在这种代码里使用是过度技术化。  从提取归纳的层面看,代码经过处理后的好处是明显的。当遇到更复杂问题时,它带来的益处将会更明显。经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(3)已投票(3)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验0100218热门杂志第1期你不知道的iPad技巧3797次分享第1期win7电脑那些事6650次分享第2期新人玩转百度经验1414次分享第1期Win8.1实用小技巧2658次分享第1期小白装大神1932次分享◆请扫描分享到朋友圈C if...else 语句
一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为 false 时执行。
C 语言中 if...else 语句的语法:
if(boolean_expression)
/* 如果布尔表达式为真将执行的语句 */
/* 如果布尔表达式为假将执行的语句 */
如果布尔表达式为 true,则执行 if 块内的代码。如果布尔表达式为 false,则执行 else 块内的代码。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
#include &stdio.h&
int main ()
/* 局部变量定义 */
int a = 100;
/* 检查布尔条件 */
if( a & 20 )
/* 如果条件为真,则输出下面的语句 */
printf("a 小于 20\n" );
/* 如果条件为假,则输出下面的语句 */
printf("a 大于 20\n" );
printf("a 的值是 %d\n", a);
当上面的代码被编译和执行时,它会产生下列结果:
a 的值是 100
一个 if 语句后可跟一个可选的 else if...else 语句,这可用于测试多种条件。
当使用 if...else if...else 语句时,以下几点需要注意:
一个 if 后可跟零个或一个 else,else 必须在所有 else if 之后。
一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。
一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。
C 语言中的 if...else if...else 语句的语法:
if(boolean_expression 1)
/* 当布尔表达式 1 为真时执行 */
else if( boolean_expression 2)
/* 当布尔表达式 2 为真时执行 */
else if( boolean_expression 3)
/* 当布尔表达式 3 为真时执行 */
/* 当上面条件都不为真时执行 */
#include &stdio.h&
int main ()
/* 局部变量定义 */
int a = 100;
/* 检查布尔条件 */
if( a == 10 )
/* 如果 if 条件为真,则输出下面的语句 */
printf("a 的值是 10\n" );
else if( a == 20 )
/* 如果 else if 条件为真,则输出下面的语句 */
printf("a 的值是 20\n" );
else if( a == 30 )
/* 如果 else if 条件为真,则输出下面的语句 */
printf("a 的值是 30\n" );
/* 如果上面条件都不为真,则输出下面的语句 */
printf("没有匹配的值\n" );
printf("a 的准确值是 %d\n", a );
当上面的代码被编译和执行时,它会产生下列结果:
没有匹配的值
a 的准确值是 100
感谢您的支持,我会继续努力的!
扫码打赏,你说多少就多少
记住登录状态
重复输入密码

我要回帖

更多关于 微信小程序wx if else 的文章

 

随机推荐