MEL合宿 -17日目-

MEL合宿 -17日目-は、for文をより細かく制御するための「continue」と「break」について見ていきたいと思いまーーす∠( ゚д゚)/

continue

for文のブロック内に「continue」を記述すると、処理を中断して、次の繰り返し処理に進みます。

試しに、10回繰り返し処理をして、偶数のときだけprintし、奇数の時は処理を中断するようにします。

for($i=0; $i<10; $i++){
	if($i%2 >= 1){
		continue;
	}
	print ($i+"\n");
}

「if($i%2 >= 1){}」は、変数「$i」を2で割り算した時の余りを求めます。余りの値が、1以上の場合は奇数と判断できるのでif文で処理を分岐します(゚∀゚)

if文の条件が成立した時は「continue」が実行され、for文の処理が中断され次の繰り返し処理に以降します。なので、if文の外に書かれたprint文は実行されません。

オススメの使い方

Mayaのツール作成では、繰り返し処理する時に目的のノードであるか結構重要だったりします。シェイプがあるのか、シェイプはmeshなのか、コネクションがあるのかなどなど。

こういった時に、if文を使って目的のデータだけ処理しようとすると、以下の様にどんどん右にズレていってしまいます。

{
	for($node in $selection){
		if(何らかの確認 part1){
			if(何らかの確認 part2){
				何らかの処理
				
				for($face in $faces){
					if(何らかの確認 part3){
						何らかの処理
					}
				}
				
				何らかの処理
			}
		}
	}
}

こういう場合、目的のデータ出ない時はcontinueしてしまうようにするとスッキリ書けます。

{
	for($node in $selection){
		if(何らかの確認 part1){
			continue
		}
		if(何らかの確認 part2){
			continue
		}
		何らかの処理
		for($face in $faces){
			if(何らかの確認 part3){
				continue
			}
			何らかの処理
		}
			
		何らかの処理
	}
}

繰り返し処理のポイントは、「目的のデータを処理する」っと考えるのではなく、「例外のデータはcontinueしてはじく」と考えるといいと思います!(*´ω`*)b

break

for文のブロック内に「break」を記述すると、処理を終了します。

試しに、10回繰り返し処理をする中で、奇数が来てしまったらそっこー処理を中断するようにします∠( ゚д゚)/

for($i=0; $i<10; $i++){
	if($i%2 >= 1){
		break;
	}
	print ($i+"\n");
}

すると、処理の最初は偶数の「0」なのでScript Editorに表示されますが、次の繰り返し処理は、奇数の「1」が来て「break」されます。このタイミングでこの繰り返し処理は終了するので、10回ループすることなく終わります。

オススメの使い方

「break」は、繰り返し処理の中で、「目的のデータを見つけた時」「これ以上続行することができない時・意味が無い時」にすると、繰り返し処理の回数が減るのでプログラムの実行が早く感じるようになります。

まとめ!

  • 「continue」は、繰り返し処理を中断して次の繰り返し処理へ進む
  • 「break」は、繰り返し処理を終了する

それでは、次回もお楽しみに!!(`・ω・´)ゞ