return
場合によっては、通常、早期終了を強制するために使用できます。これは、イベントハンドラーが基本的に単なる関数であるため、イベントハンドラーの場合でも機能します。
rollout test "Test"
(
button btn "Exception"
on btn pressed do
(
if selection.count != 1 do
return messageBox "Selection count expected to be one."
if NOT isKindOf selection[1] Editable_poly do
return messageBox "Object not an Editable Poly."
btn.text = selection[1].name
)
)
createDialog test
ただし、実装の詳細により、ループの本体など、複数回実行される可能性のある場所で使用すると、スクリプト全体の速度が低下します。
スクリプトを終了し、リスナーに情報のみを出力したい場合は、throw
使用する方がよい関数かもしれません。
if selection.count != 1 do
throw "Selection count expected to be one."
if NOT isKindOf selection[1] Editable_poly do
throw "Object not an Editable Poly"
print selection[1].name
ただし、ほとんどの場合、現在使用しているものが最も適切なソリューションです。それを改善したい場合(特に同じコードを何度も書いていることに気付いた場合)、たとえば次のようなカスタム構造体を書くことができますFilters
。
#Struct:Filters(
GetModOrObj:<fn>; Public,
Is_EditSpline:<fn>; Public,
CanSwitchTo_Segment:<fn>; Public,
HasBaseObjectProperty:<fn>; Public,
...
Is_EditPolyMod:<fn>; Public,
Is_This_EditPolyObj:<fn>; Public,
Is_EditPatch:<fn>; Public,
CanSwitchTo_Face:<fn>; Public)