Operatörler

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ı