1 つまたは複数の変数に一時的に新しい値を指定して、コードを実行します。
構文
"with" マクロは、次の構文を使用します。
{with var1 = value1
[, var2 = value2]*
do
body
}
説明
各
var の現在の値が保存されてから
var それぞれに新しい値が割り当てられ、
body が実行され、実行中にエラーが発生した場合でも、最後には各
var の元の値が、変数が変更されたときと逆の順序で復元されます。
body の最後のステートメントの値が存在する場合、これは
with の値として生成されます。
var が、前の
with ステートメントの実行で設定されなかったオプションを参照する場合(
set? を参照してください。)、元の値に設定する代わりに
unset を使用して置き換えられます。この振る舞いは、バージョン 4.0 と前の Curl API でサポートされていませんでした。それらのバージョンでは、オプションには元の値が設定されます。オプションの設定や解除に関する詳細については、
オプション を参照してください。
注意事項
元の値を復元している間にエラーが発生すると、障害の原因となります。通常、これは問題にはなりませんが、いずれかの変数がゲッター/セッターで、セッターがかなり複雑な場合に問題になる可能性があります。
例
次の例は、変数の値やオブジェクトのフィールドの値を、永続的に変更するのではなく、一時的に変更する方法を示しています。
例 |
|
{do
let x:int = 1
{with x = 11 do
{assert x == 11}
}
{assert x == 1}
}
| |