2

グリッドを生成する twitter bootstrap mixin.less を見ました。次のコード行があります。

.offsetX (@index) when (@index > 0) {
  (~".offset@{index}") { .offset(@index); }
  .offsetX(@index - 1);
}
.offsetX (0) {}

誰が何のためにそれ.offsetX (0)を知っていますか?

4

1 に答える 1

1

.offsetX (@index)はインデックスが0より大きい場合に再帰的であり、減算によって繰り返されるため、この場合は再帰関数の終点を表します。

@indexを12に設定すると、。.offset12, .offset11,..., .offset1には何も書き込まれません.offset0

編集

プリプロセッサがのミックスイン呼び出しを解決しようとすると.offsetX (0)whenキーワードが再帰的なミックスインの使用を防ぎます。別のミックスインが見つからない場合は、未定義の関数を呼び出すようなエラーが発生します。

したがって、の終了ケースは.offset (0) {}、再帰をきれいに終了するためにあります。

それを試してみたい場合は、ターミナルケースの行をコメントアウトして、再実行時の例外を確認できる基本的なデモを次に示します。

JSFiddle

于 2012-08-17T03:05:30.530 に答える