Re: [閒聊] 1.5 出現的多重參數
※ 引述《TonyQ (骨頭)》之銘言:
: 很久以前就知道的東西 , 不過一直沒有機會拿出來用 ,
: 加上是限定 1.5 以後才有的新特性 .....
: 不過既然最近會用到,拿來說嘴一下也好。:P
恕刪
: 如果有人知道這有甚麼其他用途的話,倒是希望不吝分享一下...XD
我最近也用到了,可以用在「平均」的運算
/**
* Compute the average number of input sequence.
*
* @param x input sequence of x1, x2, ... xn
* @return the average of x
*/
private static int average(int ... x) {
int result = 0;
for (int i: x) {
result += i;
}
result /= x.length;
return result;
}
推廣出去的話,所有統計類的運算都適用這種多種參數的方法
這種寫法在多次而少量的參數傳遞特別有效果
好比說在做 Haar Transform 的時候,會使用運算多次的平均值
但是直接寫成 (x + y) / 2 會影響程式碼的可讀性
倒不如寫成 average(x, y) 還比較像一篇文章
private static int[][] horizontalHaar(int[][] planePixels) {
final int height = planePixels.length;
final int width = planePixels[0].length;
final int segmentWidth = width / 2;
final int [][] horizontalDetails = new int[height][width];
for (int i=0; i<height; i++) {
for (int j=0; j<segmentWidth; j++) {
horizontalDetails[i][j] = average(planePixels[i][2*j], planePixels[i][2*j+1]);
}
}
// TODO: horizontalHaar method stub
return null;
}
--
題外話,除了 planePixels[0].length 可以取得二維陣列的長度之外
還有什麼好辦法可以取得長度嗎?
因為我感覺 planePixels[0] 實在很奇怪。。。不應該出現 0 這個索引值。。。
類似 planePixels.getWidth() 和 planePixels.getHeight() 這樣的東西
不知道存不存在呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.247.13
討論串 (同標題文章)