Kitaplar / Yöntem Dil Başvurusu / 4. İfadeler
4. İfadeler
İşleçler öncelik sırasına göre, en az bağlayandan en çok bağlayana doğru:
| Düzey | İşleçler | Birleşme |
|---|---|---|
| 1 | boru işleci (bkz. “Boru”) | soldan |
| 2 | veya, yada |
soldan |
| 3 | ve |
soldan |
| 4 | değil |
tekli |
| 5 | =, <>, <, >, <=, >=, içinde |
zincirlenmez |
| 6 | +, - |
soldan |
| 7 | *, /, böl, mod, @ |
soldan |
| 8 | tekli -, + |
tekli |
| 9 | ** |
sağdan |
| 10 | çağrı f(x), dizin L[i], üye n.ad |
soldan |
ifade: veya ('|>' veya)*
veya: ve (('veya' | 'yada') ve)*
ve: degil ('ve' degil)*
degil: 'değil' degil | iliski
iliski: toplama [('=' | '<>' | '<' | '>' | '<=' | '>=' | 'içinde') toplama]
toplama: carpma (('+' | '-') carpma)*
carpma: tekli (('*' | '/' | '@' | 'böl' | 'mod') tekli)*
tekli: ('-' | '+') tekli | '@' sonek | sonek ['**' tekli]
sonek: birincil ('(' [','.arguman+] ')' | '[' ','.ifade+ ']' | '.' AD)*Aritmetik
| İşleç | Anlamı | Örnek | Sonuç |
|---|---|---|---|
+, -, * |
toplama, çıkarma, çarpma | 2 + 3 * 4 |
14 |
/ |
bölme; sonuç her zaman ondalıktır | 7 / 2 |
3.5 |
böl |
tamsayı bölmesi; sıfıra doğru keser | -7 böl 2 |
-3 |
mod |
kalan; işareti bölünenin işaretidir | -7 mod 3 |
-1 |
** |
üs; sağdan birleşir | 2 ** 3 ** 2 |
512 |
@ |
matris çarpımı (tensörlerde) | A @ B |
Tekli eksi üsten sonra uygulanır: -2 ** 2 değeri -4’tür. İki tamsayının +, -, *, böl, mod ve ** sonucu tamsayıdır; işlenenlerden biri ondalıksa sonuç ondalıktır. Sıfıra bölmek “Sıfıra bölme” hatası verir.
Karşılaştırma
=, <>, <, >, <=, >= mantıksal sonuç verir. Sayılar değerleriyle karşılaştırılır (1 = 1.0 doğrudur), metinler sözlük sırasıyla. Listeler ve sözlükler yalnızca eşitlik bakımından (=, <>) karşılaştırılabilir; eşitlik eleman eleman sınanır. İlişki işleçleri zincirlenmez: 1 < x < 5 sözdizimi hatasıdır; 1 < x ve x < 5 yazılır.
x içinde K, x değeri K listesinin elemanı, K sözlüğünün anahtarı ya da K metninin bir parçası olduğunda doğrudur.
Mantık
ve, veya kısa devrelidir: sonuç sol işlenenle belli oluyorsa sağ işlenen hesaplanmaz. yada iki işlenenden yalnızca biri doğru olduğunda doğrudur. değil değeri tersine çevirir.
Mantık işleçleri karşılaştırmalardan sonra bağlar; bu yüzden a > 1 ve b < 2 ayraç gerektirmez. İşlenenler tamsayıysa aynı işleçler bit işlemi yapar: 6 ve 3 değeri 2, 6 veya 3 değeri 7, 6 yada 3 değeri 5’tir.
Boru
x |> f ifadesi f(x) ile, x |> f(y) ifadesi f(x, y) ile aynıdır: soldaki değer sağdaki çağrının ilk argümanı olur. Zincirleme soldan sağa okunur:
yaz([3, 1, 2] |> Sırala |> Ters, 1)[3, 2, 1]Birincil ifadeler
birincil: SAYI | METIN | AD | 'doğru' | 'yanlış' | 'boş' | 'kendi'
| 'eğer' ifade 'ise' ifade 'değilse' ifade
| 'miras' [AD]
| adsiz_altprogram
| '(' ifade ')'
| koleksiyonKoşullu ifade. eğer k ise a değilse b, k doğruysa a’nın, değilse b’nin değerini verir; yalnızca seçilen dal hesaplanır.
Koleksiyon sabitleri.
| Yazım | Değer |
|---|---|
[] |
boş liste |
[1, 2, 3] |
liste |
[1..5] |
[1, 2, 3, 4, 5] |
[:] |
boş sözlük |
['a': 1, 'b': 2] |
sözlük |
Son elemandan sonra virgül bırakılabilir.
Çağrı. f(a, b) alt programı çağırır. Parametresi olmayan bir alt program ayraçsız da çağrılabilir: Selamla ile Selamla() aynıdır. Deyim olarak tek başına yazılan bir alt program adı ise parametreleri olsa da çağrıdır; eksik argümanlar varsayılan değerlerini alır. Bir alt programı çağırmadan değer olarak almak için başına @ yazılır: @Selamla.
Dizin. L[i] liste, sözlük, metin ve tensörlere uygulanır. Çok boyutlu erişim M[i, j] ya da M[i][j] biçiminde yazılır.
Üye erişimi. n.ad bir nesnenin alanına, metoduna ya da bir birimin dışa aktardığı ada erişir.
Biçimli argüman. Bir çağrının argümanı değer:genişlik ya da değer:genişlik:basamak biçiminde yazılabilir; değer metne çevrilip sağa yaslanır. yaz(3.14159:8:2, 1) çıktısı 3.14 olur.
Adsız alt programlar
adsiz_altprogram:
('fonksiyon' | 'prosedür') [parametreler] [':' tip] '=>' ifade
| ('fonksiyon' | 'prosedür') [parametreler] [':' tip] bildirim* blokkare := fonksiyon(x) => x * x
artır := fonksiyon(x: tamsayı): tamsayı
başla
dön x + 1
bitirAdsız alt programlar tanımlandıkları kapsamdaki değişkenleri yakalar ve onlar üzerinde çalışmayı, tanımlandıkları alt program döndükten sonra da sürdürür.