次のようなものが必要な Web アプリケーション (Spring と Hibernate を使用) にページネーションを実装していました。
public static int deleteSingle(long totalRows, long pageSize, int currentPage)
{
return totalRows==currentPage*pageSize-pageSize ? currentPage-- : currentPage;
}
このメソッドを次のようにどこかから呼び出すとします。
deleteSingle(24, 2, 13);
これらの引数を使用すると、条件が満たされ、変数の値currentPage
(つまり 13) から 1 を引いた値 (つまり 12) が返されますが、 の値は減少しませんcurrentPage
。この呼び出しの後、元の値である 13 が返されます。
期待どおりに動作させるには、次のようにメソッドを変更する必要がありました。
public static int deleteSingle(long totalRows, long pageSize, int currentPage)
{
if(totalRows==currentPage*pageSize-pageSize)
{
currentPage=currentPage-1; //<-------
return currentPage; //<-------
}
else
{
return currentPage;
}
}
では、減分演算子 - を使用して値を 1 減らさないのはなぜcurrentPage--
ですか? currentPage=currentPage-1;
このシナリオでは、なぜそれが必要なのですか?