Wiki source for KeyPgOpAssignment


Show raw source

{{fbdoc item="title" value="Operator =[>] (Assign)"}}----
Assigns a value to a variable

{{fbdoc item="syntax"}}##
[[KeyPgDeclare|declare]] [[KeyPgOperator|operator]] **Let** ( [[KeyPgByref|byref]] //lhs// [[KeyPgAs|as]] //T1//, [[KeyPgByref|byref]] //rhs// [[KeyPgAs|as]] //T2// )
##
{{fbdoc item="usage"}}##
//lhs// **=** //rhs//
##//or//##
//lhs// **=>** //rhs// (from fbc version 0.90)

##//or, in the //QB// dialect,//##

[ [[KeyPgLet|Let]] ] //lhs// **=** //rhs//
##//or//##
[ [[KeyPgLet|Let]] ] //lhs// **=>** //rhs// (from fbc version 0.90)
##
{{fbdoc item="param"}}
##//lhs//##
The variable to assign to.
##//T1//##
Any numeric, boolean, string or pointer type.
##//rhs//##
The value to assign to ##//lhs//##.
##//T2//##
Any type convertible to ##//T2//##.

{{fbdoc item="desc"}}
This operator assigns the value of its right-hand side operand (##//rhs//##) to its left-hand side operand (##//lhs//##). The right-hand side operand must be implicitly convertible to the left-hand side type (##//T1//##) (for conversion of a boolean to an integer, false or true boolean value becomes 0 or -1 integer value). For example, you cannot assign a numeric value to a string type; to do that, first convert the numeric value to a string using ##[[KeyPgStr|Str]]## or ##[[KeyPgWstr|Wstr]]##.
Assignment between arrays is not supported presently.

Avoid confusion with ##[[KeyPgOpEqual|Operator = (Equal)]]##, which also uses the '##=##' symbol.
For this purpose and for solving some cases of ambiguity of the parser (see ##[[KeyPgByrefFunction|BYREF (function results)]]##), the alternative symbol '=>' can be used for assignments (in place of '=') from fbc version 0.90 (same as already for the initializers).
//Note: the '=>' symbol has been chosen against '<=' (already the operator 'Less Than Or Equal') and ':=' (':' used as statement separator).//

This operator can be overloaded for user-defined types as a member ##[[KeyPgOperator|Operator]]## using the appropriate syntax.

{{fbdoc item="ex"}}
{{fbdoc item="filename" value="examples/manual/operator/assign.bas"}}%%(freebasic)
dim i as integer
i = 420 ' <- this is the assignment operator

if i = 69 then '<-this is the equivalence operator
print "ERROR: i should equal 420"
end -1
end if

print "All is good."
end 0
%%

{{fbdoc item="filename" value="examples/manual/operator/assign-let.bas"}}%%(freebasic)
' compile with -lang fblite or qb

#lang "fblite"

Dim i As Integer
Let i = 300 ' <-alternate syntax
%%

{{fbdoc item="lang"}}
- In the //[[CompilerOptlang|-lang qb]]// dialect, this operator cannot be overloaded.
- In the //[[CompilerOptlang|-lang qb]]// dialect, an assignment expression can be preceded by the ##[[KeyPgLet|Let]]## keyword.

{{fbdoc item="diff"}}
- None

{{fbdoc item="see"}}
- ##[[KeyPgOpEqual|Operator = (Equal)]]##
- ##[[KeyPgOpLet|Operator Let (Assignment)]]##
- ##[[KeyPgSwap|Swap]]##
- [[ProPgDataConversion|Coercion and Conversion]]

{{fbdoc item="back" value="CatPgOpAssignment|Assignment Operators"}}{{fbdoc item="back" value="CatPgOperators|Operators"}}
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki



sf.net phatcode