索引器是否應該總是引用一個離散序列? 我很想不想,但我想問問別人怎麼想。索引器是否總是引用一個離散序列?
在多項式類上創建'快捷方式'後,問題就開始了。
Polynomial p = new Polynomial(coefficients);
正常的方法來計算Y = P(5.2)是使用下面的方法調用:
double y = p.Evaluate(5.2);
的快捷方式,製成(使用型雙的一個索引)是:
double y = p[5.2];
我認爲這個想法是多項式(一個連續函數)被視爲一種模擬數組或連續數組,如果這是有道理的。但是,Evaluate函數來自IMathFunction接口。該接口也採用的插值類:
CubicSplineInterpolator f = new CubicSplineInterpolator(arrayOfPoints)
有一個問題在這裏,因爲插類已經有一個int類型的公共索引來訪問其用於插補點陣列。內插器可以像連續函數一樣工作(在其限制範圍內),但是如果快捷方式轉出到所有IMathFunction類,那麼f [5.0]和f [5]將返回不同的對象,讀取代碼時可能會引起混淆。
double y;
Point<double> p;
// ... some other code
CubicSplineInterpolator f = new CubicSplineInterpolator(arrayOfPoints)
y = f[5.0];
p = f[5];
我應該擔心這種使用類型的索引的兩倍,或者這是什麼,他們應該使用?
嗯,這是一個壞主意,你找到了原因。 –
我想問題是插值器不能同時看作點和連續模擬陣列的離散陣列。這是混淆的權利? – Ben
@Hans Passant儘管這與「f.Evaluate(5.0)」和「f.Evaluate(5)」有什麼不同?我並不不同意這個結論,但是...... – 2011-11-11 01:10:17