docs.roxen.comView this page in a printer friendly mode
DocsPike7.0TutorialExpressions
Copyright © 2012, Roxen Internet Software
Suggestions, comments & compliments
manuals@roxen.com
 DEMO  DOCS  PIKE
 COMMUNITY  DOWNLOAD
www.roxen.com

   

Some Terminology
Arithmetical Operations
Operations on Complex Types
Comparison
Logical Expressions
Bitwise Operations
Operations on Sets
Indexing
Assignment
Type Conversions
The Comma Operator
Call and Splice
Operator Precedence and Associativity

Type Conversions

Values of one type can be converted to a value of another type. For example, the integer 4711 can be converted to the string "4711". (These two may look similar, but they are actually entirely different things. For example, 4711 + 3 will give you 4714, "4711" + "3" will give you "47113".)

Some conversions are done automatically. For example, in the expression "hello" + 17 the integer 17 will be automatically converted to the string "17", before the two strings are concatenated, giving the result "hello17". But some conversions need to be performed with a special operation, called an explicit type conversion or cast. There is a special cast operator, which is written as a data type between parentheses:

(float)14	// Gives the float 14.0
(int)6.9	// Gives the int 6
(string)6.7	// Gives the string "6.7"
(float)"6.7"	// Gives the float 6.7

Here is a list of some useful casts:

Casting fromtogives the result

int

float

The floating-point number with the same value as the integer

float

int

An integer, with the fractional part ("the decimals") just skipped

int

string

Converts the integer to a string with a number in normal base-10 notation

float

string

Converts the floating-point number to a string

string

int

Converts the first number in the string to an integer. The number should be an integer written in normal base-10 notation.

string

float

Converts the first number, with or without decimals, in the string to a floating-point number

string

program

If the string contains a filename, compile the file and return the program. The results are cached.

string

object

First casts the string to a program as above, and then clones the result. The results are cached.

array

array(type)

This recursively casts all values in the array to type.

multiset

array

The same as doing indices(multiset).

Sometimes you know more than what Pike does about data types, and another use of the cast operator is to tell Pike what you know. For example, lets say that you have a variable with the type mixed, which means that it can contain any type of data. Lets also say that you happen to know that that variable contains an integer. If you want to use this value where an integer is required, Pike might complain about it:

mixed m;
int i;
m = 18;
i = m;	// This might make Pike suspicious

You can use a cast to tell Pike that m is an integer and nothing else:

i = (int)m; // Don't worry. I promise it's an int!