作者yauhh (哟)
看板Programming
标题Re: [问题] 想把 > 和 < 在回圈中动态给定
时间Sat Feb 9 20:39:53 2013
※ 引述《BBSealion (海狮)》之铭言:
: 有点不清楚怎麽叙述
: 就是我有一个判断是要跑
: if(a>1)
: else if(a>2)
: ...
: else if(a>10)
: 另一个就是反过来
: if(a<1)
: else if(a<2)
: ...
: else if(a<10)
: 因为两个判断是里面做的事情很像
: 我想写成一个i=0~1跑两次的回圈解决
: 但要怎样控制那个判断式的 > 和 < 记号呢?
: 是可以另外写一个function丢参数i进去实作 > 和 <
: 但为了一个大於小於多开一个function感觉还是不太漂亮
: 想知道有没有更精简的写法呢
为了大於和小於分别开不同的functions才漂亮,反倒是拿一个参数决定阶层式大於
或阶层式小於才是丑恶. 因为,你怎麽能说 if (a>10) ... else if (a > 9) ...
到 else if (a > 1) ... 的反向是 if (a<1) ... else if (a < 2) ... 到 else
if (a < 10) ? 这种关连,你要说是反函数也不是,要说是语意相近,又差很多.
主要还是看功能依赖性质,还有上下文. 看大於的部份,由这种程式结构衍生出来
的最小功能,大概就是一列数字区间,每一项分别对应独立的值. 也可以写成这样:
Storage s[10] = ...
Storage result;
......
for (i=10; i<=1; i--) {
if (a > i) {
result = s[i-1];
......
break;
}
}
如果Storage是一个值, result就拿到一个值; 如果Storage是个物件, 对result
的操作就代表对应於不同的程式段落. 而後者, 如果Ruby的duck typing成立, 就
很棒, 要不然假如是做类似的操作像 result.do(i) 这种废话操作,就白忙一场.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.167.46.76