DeğerlerValues

İçindeki F# değerler belirli bir türe sahip olan miktarlardır; değerler tamsayı veya kayan nokta sayıları, karakterler veya metin, listeler, sıralar, diziler, tanımlama grupları, ayırt edici birleşimler, kayıtlar, sınıf türleri veya işlev değerleri olabilir.Values in F# are quantities that have a specific type; values can be integral or floating point numbers, characters or text, lists, sequences, arrays, tuples, discriminated unions, records, class types, or function values.

Değer bağlamaBinding a Value

Bağlama terimi, bir adı tanımıyla ilişkilendirme anlamına gelir.The term binding means associating a name with a definition. let Anahtar sözcüğü, aşağıdaki örneklerde olduğu gibi bir değeri bağlar:The let keyword binds a value, as in the following examples:

let a = 1
let b = 100u
let str = "text"

// A function value binding.

let f x = x + 1

Bir değerin türü tanımdan algılanır.The type of a value is inferred from the definition. İntegral veya kayan noktalı sayı gibi temel bir tür için, tür değişmez değer türünden belirlenir.For a primitive type, such as an integral or floating point number, the type is determined from the type of the literal. Bu nedenle, b önceki örnekte, derleyici unsigned inttürünü olarak algılar, ancak derleyici türünü a intolarak algılar.Therefore, in the previous example, the compiler infers the type of b to be unsigned int, whereas the compiler infers the type of a to be int. İşlev değerinin türü, işlev gövdesindeki dönüş değerinden belirlenir.The type of a function value is determined from the return value in the function body. İşlev değeri türleri hakkında daha fazla bilgi için bkz. işlevler.For more information about function value types, see Functions. Değişmez türler hakkında daha fazla bilgi için bkz. değişmez değerler.For more information about literal types, see Literals.

Derleyici, varsayılan olarak kullanılmayan bağlamalar hakkında tanılama vermiyor.The compiler does not issue diagnostics about unused bindings by default. Bu iletileri almak için, proje dosyanızda veya derleyicisini çağırırken uyarı 1182 ' yı etkinleştirin (bkz --warnon . derleyici seçeneklerialtında).To receive these messages, enable warning 1182 in your project file or when invoking the compiler (see --warnon under Compiler Options).

Neden sabit?Why Immutable?

Sabit değerler, bir programın yürütülmesi sırasında değiştirilemeyen değerlerdir.Immutable values are values that cannot be changed throughout the course of a program's execution. C++, Visual Basic veya C#gibi dillerde kullandıysanız, bir programın yürütülmesi sırasında yeni değerler atanabileceği değişkenler yerine, sabit değerler üzerinde en fazla değer elde eden değişken olduğunu F# fark edebilirsiniz.If you are used to languages such as C++, Visual Basic, or C#, you might find it surprising that F# puts primacy over immutable values rather than variables that can be assigned new values during the execution of a program. Değişmez veriler fonksiyonel Programlamanın önemli bir öğesidir.Immutable data is an important element of functional programming. Çok iş parçacıklı bir ortamda, birçok farklı iş parçacığı tarafından değiştirilebilen paylaşılan kesilebilir değişkenlerin yönetilmesi zordur.In a multithreaded environment, shared mutable variables that can be changed by many different threads are difficult to manage. Ayrıca, değişebilir değişkenlerle, bazı durumlarda bir değişkenin başka bir işleve geçirildiğinde değiştirilip değiştirilemeyeceğini söylemek zor olabilir.Also, with mutable variables, it can sometimes be hard to tell if a variable might be changed when it is passed to another function.

Saf işlevsel dillerde değişken yoktur ve işlevler kesinlikle matematik işlevleri olarak davranır.In pure functional languages, there are no variables, and functions behave strictly as mathematical functions. Bir yordamsal dildeki kodun bir değeri değiştirmek için değişken atamasını kullanması durumunda, işlevsel dildeki denk kodun girdi, sabit bir işlev ve çıkış olarak farklı sabit değerler olan sabit bir değeri vardır.Where code in a procedural language uses a variable assignment to alter a value, the equivalent code in a functional language has an immutable value that is the input, an immutable function, and different immutable values as the output. Bu matematiksel striclük, programın davranışı hakkında daha sıkı bir yaklaşım sağlar.This mathematical strictness allows for tighter reasoning about the behavior of the program. Bu iyileştirme, derleyicilerin kodu daha kolay bir şekilde denetlemesini ve daha etkili bir şekilde iyileştirmesini sağlar ve geliştiricilerin doğru kodu anlamasına ve yazmasını kolaylaştırır.This tighter reasoning is what enables compilers to check code more stringently and to optimize more effectively, and helps make it easier for developers to understand and write correct code. İşlevsel kodun, normal yordamsal koddan hata ayıklamanın daha kolay olması olasıdır.Functional code is therefore likely to be easier to debug than ordinary procedural code.

F#, saf işlevsel bir dil değildir, ancak işlevsel programlamayı tam olarak destekler.F# is not a pure functional language, yet it fully supports functional programming. Bu işlemin yapılması, kodunuzun işlevsel programlama açısından önemli bir yönden yararlanmasına olanak sağladığından, sabit değerlerin kullanılması iyi bir uygulamadır.Using immutable values is a good practice because doing this allows your code to benefit from an important aspect of functional programming.

Değişebilir değişkenlerMutable Variables

Değiştirilebilecek bir değişken belirtmek için mutable anahtar sözcüğünü kullanabilirsiniz.You can use the keyword mutable to specify a variable that can be changed. ' Deki F# kesilebilir değişkenlerin, genellikle bir tür alanı veya yerel değer olarak sınırlı bir kapsamı olmalıdır.Mutable variables in F# should generally have a limited scope, either as a field of a type or as a local value. Sınırlı bir kapsama sahip kesilebilir değişkenlerin denetimi daha kolaydır ve yanlış yollarla değiştirilmesinin daha düşüktür.Mutable variables with a limited scope are easier to control and are less likely to be modified in incorrect ways.

let Anahtar sözcüğünü bir değer tanımladığınız şekilde kullanarak, değişebilir bir değişkene bir başlangıç değeri atayabilirsiniz.You can assign an initial value to a mutable variable by using the let keyword in the same way as you would define a value. Bununla birlikte, aşağıdaki örnekte olduğu gibi <- işleci kullanarak değiştirilebilir değişkenlere daha sonra yeni değerler atayabilmeniz fark olur.However, the difference is that you can subsequently assign new values to mutable variables by using the <- operator, as in the following example.

let mutable x = 1
x <- x + 1

Oluşturucular gibi mutable kapanışları 'a ref oluşturan formlar da dahil olmak üzere, işaretlenen değerler otomatik olarak bir kapanış tarafından yakalanarak yükseltilir. seqValues marked mutable may be automatically promoted to 'a ref if captured by a closure, including forms that create closures, such as seq builders. Bu gerçekleştiğinde size bildirilmesini istiyorsanız, proje dosyanızda veya derleyicisini çağırırken uyarı 3180 ' yı etkinleştirin.If you wish to be notified when this occurs, enable warning 3180 in your project file or when invoking the compiler.

BaşlıkTitle AçıklamaDescription
let Bağlamalarılet Bindings Adları değerlere ve işlevlere bağlamak let için anahtar sözcüğünü kullanma hakkında bilgi sağlar.Provides information about using the let keyword to bind names to values and functions.
İşlevlerFunctions İçindeki F#işlevlere genel bir bakış sağlar.Provides an overview of functions in F#.

Ayrıca bkz.See also