UWSCRでは新たにいくつかの演算子が追加されています。
複合代入演算子
+=
-=
*=
/=
左辺の変数の値に対して右辺の値で計算を行い左辺の変数に代入します。
a = 1
a += 2 // a = a + 2 と同じ
print a // 3
a -= 1 // a = a - 1 と同じ
print a // 2
a *= 3 // a = a * 3 と同じ
print a // 6
a /= 2 // a = a / 2 と同じ
print a // 3
代入演算子
:=
=
による通常の代入は文のように振る舞いますが、:=
による代入は式となり代入された値を返します。
print a := 100 // 100
print a // 100
b = c := 200
// c := 200 によりcに200が代入されている
print c // 200
// c := 200 という式が200を返すため、bに200が代入された
print b // 200
select a := 5 // selectの条件式として代入式を使う
case 1,2,3
print "<#a>が入力されました"
default
print "不正な値(<#a>)が入力されました、1~3を入れてください"
selend
UWSCにおける:=
との違い
UWSCでは以下の場合のみ:=
が利用できました
- eval内での代入
- COMオブジェクトのメソッドの名前付き引数
UWSCRはevalの仕様がUWSCとは異なり、evalに渡された文字列をスクリプトと同等に解析・評価します。そのため:=
はUWSCRの代入演算子として評価されます。また=
による代入もそのまま利用可能です。
COMの名前付き引数はUWSCと同じように利用可能です。この場合、代入演算子としては機能しません。
ws = createoleobj("WScript.Shell")
ws.Popup(Title := "ほげほげ", Text := "ふがふが")
print Title // [評価エラー] 識別子が見つかりません (Title)
等価比較
==
!=
それぞれ=
および<>
による比較と同等です。
a = 1
print a = 1 // True
print a == 1 // True
print a <> 1 // False
print a != 1 // False
論理演算子
andL
orL
xorL
and
, or
, xor
演算子は両辺の値によって論理演算かビット演算のいずれかが行われます。
それぞれにL
がついた演算子は論理演算子となり、真偽値を返します。
print 1 and TRUE // 1
print 1 andL TRUE // True
print 2 or 1 // 3
print 2 orL 1 // True
print 3 xor 1 // 2
print 3 xorL 1 // False
ビット演算子
andB
orB
xorB
B
の場合はビット演算子となります。両辺を数値とみなしてビット演算を行います。
三項演算子
?:
三項演算子とは、値を返すif文のようなもので
条件式 ? 真の式 : 偽の式
という書式で使います。条件式が真の場合は真の式を評価した値を、偽の場合は偽の式を評価した値を返します。いずれも文は不可で必ず式である必要があります。
print TRUE ? "hoge" : "fuga" // hoge
a = FALSE ? "foo" : "bar"
print a // bar