LoginSignup
0
0

演算子

Last updated at Posted at 2023-12-03

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0