Operatörler, bir veya birkaç işleneni alıp bir değer döndüren özel işlevlerdir.
İşlenen
, bir operatörün girdi olarak kullandığı, genellikle değişmez değer, değişken veya ifade olan bir değerdir. Örneğin, aşağıdaki kodda bir değer döndürmek için, üç değişmez işlenenle (2, 3 ve 4
)
toplama (
+
) ve çarpma (
*
) operatörleri kullanılır. Daha sonra, döndürülen değeri (14)
sumNumber
değişkenine atamak için atama (
=
) operatörü tarafından bu değer kullanılır.
var sumNumber:uint = 2 + 3 * 4; // uint = 14
Operatörler tekli, ikili veya üçlü olabilir.
Tekli
operatör tek bir işlenen alır. Örneğin, artırma (
++
) operatörü tek bir işlenen aldığından tekli bir operatördür.
İkili
operatör iki işlenen alır. Örneğin, bölme (
/
) operatörü iki işlenen alır.
Üçlü
operatör üç işlenen alır. Örneğin, koşul (
?:
) operatörü üç işlenen alır.
Bazı operatörler
aşırı yüklüdür
, başka bir deyişle, kendilerine iletilen işlenenlerin türüne ve miktarına bağlı olarak farklı şekilde davranır. Toplama (
+
) operatörü, işlenenlerin veri türüne bağlı olarak farklı şekilde davranan bir aşırı yüklü operatör örneğidir. Her iki işlenen de sayı olursa, toplama operatörü değerlerin toplamını döndürür. Her iki işlenen de dize olursa, toplama operatörü iki işlenenin bitiştirilmiş halini döndürür. Aşağıdaki örnek kod, işlenenlere bağlı olarak operatörün nasıl farklı şekilde davrandığını gösterir:
trace(5 + 5); // 10
trace("5" + "5"); // 55
Operatörler de sağlanan işlenenlerin sayısına bağlı olarak farklı şekilde davranabilir. Çıkarma (
-
) operatörü hem tekli hem de ikili bir operatördür. Yalnızca bir işlenen sağlandığında, çıkarma operatörü işleneni negatif duruma getirip sonucu döndürür. İki işlenen sağlandığında, çıkarma operatörü işlenenlerin farkını döndürür. Aşağıdaki örnek, ilk olarak tekli operatör olarak ve sonra da ikili operatör olarak kullanılan çıkarma operatörünü gösterir.
trace(-3); // -3
trace(7 - 2); // 5
Operatör önceliği ve ilişkilendirilebilirlik
Operatör önceliği ve ilişkilendirilebilirliği, operatörlerin işleneceği sırayı belirler. Derleyicinin, toplama (
+
) operatöründen önce çarpma (
*
) operatörünü işlediği aritmetiği bilenler için bu doğal görünse de, derleyicinin ilk olarak hangi operatörlerin işleneceği hakkında açıkça talimatlara ihtiyacı vardır. Bu talimatların hepsi
operatör önceliği
olarak ifade edilir. ActionScript, parantez (
()
) operatörünü kullanarak değiştirebileceğiniz varsayılan bir operatör önceliğini tanımlar. Örneğin, aşağıdaki kod, derleyiciyi çarpma operatöründen önce toplama operatörünü işlemeye zorlamak için önceki örnekteki varsayılan önceliği değiştirir:
var sumNumber:uint = (2 + 3) * 4; // uint == 20
Aynı önceliğe sahip iki veya daha fazla operatörün aynı ifadede bulunduğu durumlarla karşılaşabilirsiniz. Bu durumlarda, derleyici, hangi operatörün önce işleneceğini belirlemek için
ilişkilendirilebilirlik
kurallarını kullanır. Atama operatörleri dışındaki tüm ikili operatörler
sola ilişkilendirilebilir
, başka bir deyişle, soldaki operatörler, sağdaki operatörlerden önce işlenir. Atama operatörleri ve koşul (
?:
) operatörü
sağa ilişkilendirilebilir
, başka bir deyişle, sağdaki operatörler, soldaki operatörlerden önce işlenir.
Örneğin, aynı önceliğe sahip olan küçüktür (
<
) ve büyüktür (
>
) operatörlerini göz önünde bulundurun. Aynı ifadede her iki operatör de kullanılırsa, her iki operatör de sola ilişkilendirilebilir olduğundan, soldaki operatör önce işlenir. Başka bir deyişle, aşağıdaki iki deyim aynı çıktıyı oluşturur:
trace(3 > 2 < 1); // false
trace((3 > 2) < 1); // false
3 işleneni 2 işleneninden büyük olduğu için ilk olarak büyüktür operatörü işlenir ve
true
değerini verir.
true
değeri daha sonra 1 işleneni ile birlikte küçüktür operatörüne iletilir. Aşağıdaki kod bu ara durumu temsil eder:
trace((true) < 1);
Küçüktür operatörü,
true
değerini 1 sayısal değerine dönüştürür ve bu sayısal değeri ikinci işlenen olan 1 ile karşılaştırarak
false
değerini döndürür. (1 değeri 1'den küçük değildir.)
trace(1 < 1); // false
Parantez operatörüyle, varsayılan sola ilişkilendirilebilirliği değiştirebilirsiniz. Küçüktür operatörünü ve bu operatörün işlenenlerini parantez içine alarak, derleyiciye, ilk önce küçüktür operatörünü işlemesini bildirebilirsiniz. Aşağıdaki örnek, önceki örnekle aynı sayıları kullanarak farklı bir çıktı oluşturmak için parantez operatörünü kullanır:
trace(3 > (2 < 1)); // true
2 işleneni 1 işleneninden daha az olmadığı için ilk olarak küçüktür operatörü işlenir ve
false
değerini verir.
false
değeri daha sonra 3 işleneni ile büyüktür operatörüne iletilir. Aşağıdaki kod bu ara durumu temsil eder:
trace(3 > (false));
Büyüktür operatörü,
false
değerini 0 sayısal değerine dönüştürür ve bu sayısal değeri diğer 3 işleneniyle karşılaştırarak
true
değerini döndürür. (3 değeri 0'dan büyüktür.)
trace(3 > 0); // true
Aşağıdaki tabloda, azalan öncelik sırasıyla ActionScript 3.0'ın operatörleri listelenmektedir. Her tablo satırında, aynı önceliğe sahip operatörler bulunmaktadır. Her operatör satırı, tablonun aşağısında görüntülenen satırdan daha yüksek önceliğe sahiptir.
Grup
|
Operatörler
|
Birincil
|
[] {x:y} () f(x) new x.y x[y] <></> @ :: ..
|
Sonek
|
x++ x--
|
Tekli
|
++x --x + - ~ ! delete typeof void
|
Çarpımsal
|
* / %
|
Toplamsal
|
+ -
|
Bitsel kaydırma
|
<< >> >>>
|
İlişkisel
|
< > <= >= as in instanceof is
|
Eşitlik
|
== != === !==
|
Bitsel AND
|
&
|
Bitsel XOR
|
^
|
Bitsel OR
|
|
|
Mantıksal AND
|
&&
|
Mantıksal OR
|
||
|
Koşullu
|
?:
|
Atama
|
= *= /= %= += -= <<= >>= >>>= &= ^= |=
|
Virgül
|
,
|
Birincil operatörler
Birincil operatörler arasında, Array ve Object değişmezleri oluşturmak, ifadeleri gruplandırmak, işlevleri çağırmak, sınıf örneklerini başlatmak ve özelliklere erişmek için kullanılan operatörler yer alır.
Aşağıdaki tabloda listelendiği gibi, tüm birincil operatörler eşit önceliğe sahiptir. E4X belirtiminin parçası olan operatörler, (E4X) notasyonuyla belirtilir.
Operatör
|
Gerçekleştirilen işlem
|
[]
|
Bir diziyi başlatır
|
{x:y}
|
Bir nesneyi başlatır
|
()
|
İfadeleri gruplandırır
|
f(x)
|
Bir işlevi çağırır
|
new
|
Bir yapıcıyı çağırır
|
x.y x[y]
|
Bir özelliğe erişir
|
<></>
|
Bir XMLList nesnesini (E4X) başlatır
|
@
|
Bir niteliğe (E4X) erişir
|
::
|
Bir adı (E4X) niteler
|
..
|
Bir alt XML öğesine (E4X) erişir
|
Sonek operatörleri
Sonek operatörleri bir operatörü alır ve değeri artırır veya azaltır. Bu operatörler tekli operatörler olsa da, yüksek öncelikleri ve özel davranışları nedeniyle diğer tekli operatörlerden ayrı olarak sınıflandırılır. Sonek operatörü büyük bir ifadenin parçası olarak kullanıldığında, sonek operatörü işlenmeden önce ifadenin değeri döndürülür. Örneğin, aşağıdaki kod, değer artırılmadan önce
xNum++
ifadesinin değerinin nasıl döndürüldüğünü gösterir:
var xNum:Number = 0;
trace(xNum++); // 0
trace(xNum); // 1
Aşağıdaki tabloda listelendiği gibi, tüm sonek operatörleri eşit önceliğe sahiptir:
Operatör
|
Gerçekleştirilen işlem
|
++
|
Artırır (sonek)
|
--
|
Azaltır (sonek)
|
Tekli operatörler
Tekli operatörler tek bir işlenen alır. Bu gruptaki artırma (
++
) ve azaltma (
--
) operatörleri,
önek
operatörleridir
, başka bir deyişle, bunlar bir ifadede işlenenden önce görüntülenir. Önek operatörleri, tüm ifadenin değeri döndürülmeden önce artırma veya azaltma işleminin tamamlanmasıyla sonek eşlerinden farklılık gösterir. Örneğin, aşağıdaki kod, değer artırıldıktan sonra
++xNum
ifadesinin değerinin nasıl döndürüldüğünü gösterir:
var xNum:Number = 0;
trace(++xNum); // 1
trace(xNum); // 1
Aşağıdaki tabloda listelendiği gibi, tüm tekli operatörler eşit önceliğe sahiptir:
Operatör
|
Gerçekleştirilen işlem
|
++
|
Artırır (önek)
|
--
|
Azaltır (önek)
|
+
|
Tekli +
|
-
|
Tekli - (değilleme)
|
!
|
Mantıksal NOT
|
~
|
Bitsel NOT
|
delete
|
Bir özelliği siler
|
typeof
|
Tür bilgilerini döndürür
|
void
|
Tanımsız değer döndürür
|
Çarpma operatörleri
Çarpma operatörleri iki işlenen alır ve çarpma, bölme veya modulo hesaplamaları yapar.
Aşağıdaki tabloda listelendiği gibi, tüm çarpma operatörleri eşit önceliğe sahiptir:
Operatör
|
Gerçekleştirilen işlem
|
*
|
Çarpma
|
/
|
Bölme
|
%
|
Modulo
|
Toplama operatörleri
Toplama operatörleri iki işlenen alır ve toplama veya çıkarma hesaplamaları yapar: Aşağıdaki tabloda listelendiği gibi, tüm toplama operatörleri eşit önceliğe sahiptir:
Operatör
|
Gerçekleştirilen işlem
|
+
|
Toplama
|
-
|
Çıkarma
|
Bitsel kaydırma operatörleri
Bitsel kaydırma operatörleri iki işlenen alır ve birinci işlenenin bit'lerini ikinci işlenen tarafından belirtilen ölçüde kaydırır. Aşağıdaki tabloda listelendiği gibi, tüm bitsel kaydırma operatörleri eşit önceliğe sahiptir:
Operatör
|
Gerçekleştirilen işlem
|
<<
|
Bitsel sola kaydırma
|
>>
|
Bitsel sağa kaydırma
|
>>>
|
Bitsel işaretsiz sağa kaydırma
|
İlgili operatörler
İlgili operatörler iki işlenen alır, bunların değerlerini karşılaştırır ve bir Boolean değeri döndürür. Aşağıdaki tabloda listelendiği gibi, tüm ilgili operatörler eşit önceliğe sahiptir:
Operatör
|
Gerçekleştirilen işlem
|
<
|
Küçüktür
|
>
|
Büyüktür
|
<=
|
Küçüktür veya eşittir
|
>=
|
Büyüktür veya eşittir
|
as
|
Veri türünü kontrol eder
|
in
|
Nesne özelliklerini kontrol eder
|
instanceof
|
Prototip zincirini kontrol eder
|
is
|
Veri türünü kontrol eder
|
Eşitlik operatörleri
Eşitlik operatörleri iki işlenen alır, bunların değerlerini karşılaştırır ve bir Boolean değeri döndürür. Aşağıdaki tabloda listelendiği gibi, tüm eşitlik operatörleri eşit önceliğe sahiptir:
Operatör
|
Gerçekleştirilen işlem
|
==
|
Eşitlik
|
!=
|
Eşitsizlik
|
===
|
Katı eşitlik
|
!==
|
Katı eşitsizlik
|
Bitsel mantıksal operatörler
Bitsel mantıksal operatörler iki işlenen alır ve bit düzeyinde mantıksal işlemler gerçekleştirir. Bitsel mantıksal operatörler, öncelikleri konusunda farklılık gösterir ve azalan öncelik sırasıyla aşağıdaki tabloda listelenmektedir:
Operatör
|
Gerçekleştirilen işlem
|
&
|
Bitsel AND
|
^
|
Bitsel XOR
|
|
|
Bitsel OR
|
Mantıksal operatörler
Mantıksal operatörler iki işlenen alır ve bir Boolean sonucu döndürür. Mantıksal operatörler, öncelikleri konusunda farklılık gösterir ve azalan öncelik sırasıyla aşağıdaki tabloda listelenmektedir:
Operatör
|
Gerçekleştirilen işlem
|
&&
|
Mantıksal AND
|
||
|
Mantıksal OR
|
Koşul operatörü
Koşul operatörü üçlü operatördür, başka bir deyişle, üç işlenen alır. Koşul operatörü,
if..else
koşul deyimini uygulamanın kısayol yöntemidir.
Operatör
|
Gerçekleştirilen işlem
|
?:
|
Koşul
|
Atama operatörleri
Atama operatörleri iki işlenen alır ve bir işlenene diğer işlenenin değerini esas alarak bir değer atar. Aşağıdaki tabloda listelendiği gibi, tüm atama operatörleri eşit önceliğe sahiptir:
Operatör
|
Gerçekleştirilen işlem
|
=
|
Atama
|
*=
|
Çarpma ataması
|
/=
|
Bölme ataması
|
%=
|
Modulo ataması
|
+=
|
Toplama ataması
|
-=
|
Çıkarma ataması
|
<<=
|
Bitsel sola kaydırma ataması
|
>>=
|
Bitsel sağa kaydırma ataması
|
>>>=
|
Bitsel işaretsiz sağa kaydırma ataması
|
&=
|
Bitsel AND ataması
|
^=
|
Bitsel XOR ataması
|
|=
|
Bitsel OR ataması
|
|
|
|