Aracılığıyla paylaş


Aritmetik işleçler (F#)

Bu konu F# dilinde kullanılabilir aritmetik işleçleri açıklar.

İkili aritmetik işleçleri özeti

Kutulanmamış ayrılmaz ve kayan nokta türleri için kullanılabilir olan ikili aritmetik işleçler aşağıdaki tabloda özetlenmiştir.

İkili işleç

Notlar

+(Ayrıca, artı)

Denetlenmeyen. Sayıları birbirine eklendiğinde olası taşma koşulunu ve toplam türü tarafından desteklenen en büyük mutlak değerini aşıyor.

-(çıkarma, eksi)

Denetlenmeyen. Olası Yetersizlik durumu koşul imzasız türleri toplanabilir veya kayan nokta deðerlerinin türüne göre gösterilemeyecek kadar küçüktür.

*(çarpma, defa)

Denetlenmeyen. Sayı çarpımı, olası taşma koşulunu ve ürün türünün desteklediği en büyük mutlak değerini aşıyor.

/(bölünen bölme)

Sıfıra bölme sıfır nedenleri bir DivideByZeroException ayrılmaz türleri için. Kayan nokta türü için sıfıra bölme özel kayan nokta deðerlerinin size +Infinity veya -Infinity. Yapıldığında da olası Yetersizlik durumu koşul bir kayan noktalı sayı türüne göre gösterilemeyecek kadar küçüktür.

%(modül, mod)

Bölme işlemi geri kalanı verir. Sonucun işareti birinci işlenenin işareti ile aynıdır.

**(gücünü için üs)

Sonuç türü için en büyük mutlak değeri aştığında, olası taşma koşulunu.

Üs alma işlecini kayan nokta türü ile çalışır.

Tekli aritmetik işleçleri özeti

Tamsayı ve kayan nokta türü için kullanılabilir tekli aritmetik işleçler aşağıdaki tabloda özetlenmiştir.

Unary işleç

Notlar

+(pozitif)

Herhangi bir aritmetik ifade için uygulanabilir. İşaretin değeri değiştirmez.

-(değilleme, negatif)

Herhangi bir aritmetik ifade için uygulanabilir. Değerin işaretini değiştirir.

Taşma veya yetersiz gelme ayrılmaz türleri için at çevresine sarılmasını davranıştır. Bu, hatalı bir sonuç neden olur. Tamsayı taşması yazılım için hesap yazılmaz güvenlik sorunları için katkıda bulunabilir, ciddi sonuçlara yol açabilecek bir sorundur. Bu uygulama için önemliyse, checked işleçleri kullanmayı göz önünde bulundurun Microsoft.FSharp.Core.Operators.Checked.

İkili karşılaştırma işleçleri özeti

Tamsayı ve kayan nokta türü için kullanılabilir olan ikili karşılaştırma işleçleri aşağıdaki tabloda gösterilmiştir. Bu operatörler dönüş türü değerleri bool.

IEEE kayan noktalı gösterimi tam eşitlik işlemi desteklemediğinden kayan noktalı sayılar hiçbir zaman doğrudan eşitlik için karşılaştırılmalıdır. Kod inceleyerek eşit olacak şekilde kolayca doğrulayabilirsiniz iki sayı aslında farklı bit gösterimleri olabilir.

İşleç

Notlar

=(eşitlik, eşittir)

Bu atama işleci değil. Karşılaştırma için kullanılır. Bu genel bir operatördür.

>(büyüktür)

Bu genel bir operatördür.

<(küçüktür)

Bu genel bir operatördür.

>=(büyüktür veya eşittir)

Bu genel bir operatördür.

<=(küçüktür veya eşittir)

Bu genel bir operatördür.

<>(eşit değil)

Bu genel bir operatördür.

Aşırı yüklü ve genel işleçleri

Tüm bu konuda tartışılan işleçleri tanımlanan Microsoft.FSharp.Core.Operators ad. Bazı operatörler, statik olarak çözümlenen bir tür parametreleri kullanılarak tanımlanır. Bu işleç ile çalışan belirli bilgi türlerinin her bireysel tanımları vardır anlamına gelir. Tüm tekli ve ikili aritmetik ve Bitsel işleçler bu kategoride bulunan. Karşılaştırma işleçleri geneldir ve bu nedenle her türlü ile yalnızca temel aritmetik türleri çalışabilirsiniz. Discriminated Birliği ve kayıt türlerini F# derleyici tarafından oluşturulan kendi özel uygulamaları vardır. Sınıf türleri yöntemini kullanın Equals.

Genel işleçler özelleştirilebilir. Karşılaştırma işlevleri özelleştirmek için geçersiz kılma Equals kendi özel eşitlik karşılaştırma sağlamak ve daha sonra uygulamak için IComparable. IComparable Arabirimi olan tek bir yöntem CompareTo yöntemi.

İşleçler ve tür kesmesi

Bir ifadede bir işleç kullanımı üzerindeki işleç türü kesmesi zorlar. Ayrıca, işleçlerin kullanımı bir aritmetik türünü gösterdiğinden otomatik genelleştirmesi işleçlerin kullanımını engeller. Diğer bilgileri olmaması durumunda F# derleyicisini yorumlar int aritmetik ifade türü. Başka bir tür belirterek bu davranışı geçersiz kılabilirsiniz. Bu nedenle bağımsız değişken türleri ve dönüş türü function1 aşağıdaki kodda olarak algılanır int, ancak türleri için function2 olarak algılanır float.

// x, y and return value inferred to be int
// function1: int -> int -> int
let function1 x y = x + y

// x, y and return value inferred to be float
// function2: float -> float -> float
let function2 (x: float) y = x + y

Ayrıca bkz.

Başvuru

Sembol ve işleç başvurusu (F#)

(F#) private int value

Bitsel işleçler (F#)

Boolean İşleçleri (F#)