2013-08-31 20 views
6

int64'un azalan dizisini bildiren bir sorun yaşıyorum. ,Neden F # derleyici {0L ..- 5L ..- 10L} sıralı olarak dönüyor?

> seq{0..-5..-10};; 
val it : seq<int> = seq [0; -5; -10] 

Daha da ilginci: sade int ile çalışır, İlginç

seq{0L..-5L..-10L};; 
    ---^^^^^^^^^^^^^^^ 

stdin(5,4): error FS0739: Invalid object, sequence or record expression 

: bir hata alıyorum, ancak

seq{0L..-5L..-10L};; 

:

İstediğim budur .. arasına boşluk koyarsam,ile çalışmaya başlarçok: derleyici seq{0L..-5L..-10L} ile büküm içine alır neden

> seq{0L .. -5L .. -10L};; 
val it : seq<int64> = seq [0L; -5L; -10L] 

Birisi açıklayabilir misiniz?

cevap

6

Bunun biraz garip davranış olduğunu kabul ediyorum. Genellikle (bu özellik kesinlikle belirtilmemiş olsa da) .. civarında boşluklar yazması önerilir ve bu durumda doğru şekilde çalışır. Yani kullanarak öneriyoruz:

seq { 0 .. -5 .. -10 } 
seq { 0L .. -5L .. -10L } 

Neden int ve int64 için farklı davranıyor bu nedir? Visual Studio, 1..-2 ve 1L..-2 yazarken, metni farklı şekilde renklendirdiğini fark edebilirsiniz (ilk durumda .., sayılarla aynı renge sahiptir, diğer durumda, boşluklarla birlikte .. ile aynı renge sahiptir).

sorun derleyici 1. gördüğünde, bir kayan nokta değeri (1.0) anlamına gelebilir ya da 1.. bir başlangıç ​​olabilir, bu nedenle bu durumda özel olarak ele alınmıştır. 1L. için, bu bir sorun değil - 1L., 1L..'un başlangıcı olmalıdır.

1..-5..-10 yazarsanız, derleyici özel kullanımı kullanır ve bir dizi oluşturur. 1L..-5..-10 yazarsanız, derleyici ..-'u 5L'a uygulanan tek bir operatör olarak ayrıştırır. Boşlukları yazmak, tek operatör ile .. arasındaki belirsizliği ve ardından negatif bir sayıyı giderir. Başvuru için

, burada benim Visual Studio dan ekran görüntüsü (sarı ikinci satırında yeşil renkte 10.. gösterir ama .. - değil özellikle göze çarpan bir fark, ancak farklı :-) vardır)

enter image description here

+1

Visual Studio'mda (2012), varsayılan şemada renk farklılıkları görmüyorum. Bazı özel şema kullanıyor musunuz? –

+0

@KomradeP. Bu oldukça mümkündür - sayıların renklerini değiştirdim. Bir ekran görüntüsü ekledim (ancak yakınlaştırmanız gerekebilir, renkler benzerdir ..) –

İlgili konular