官术网_书友最值得收藏!

  • Perl 6 Deep Dive
  • Andrew Shitov
  • 259字
  • 2021-07-03 00:05:49

Typed variables

In the previous examples, the type of the content that is hosted in a variable container was defined by the value that was assigned to a variable:

my $x;      # Declaring a variable as a container.
$x = 2; # Now it contains an integer.
$x = 'Two'; # But now it keeps a string.

Perl 6 allows you to make the type of the variable container strict by specifying it together with a variable declaration:

my Int $x = 2;

Here, the $x variable will only be able to accept integers. An attempt to assign it to a string, for example, will result in the following error:

$x = 'Two'; # Type check failed in assignment to $x; 
# expected Int but got Str ("Two")

Similarly, Perl 6 allows elements of different types in the same array:

my @a = (1, 'two', 3.0);

Declaring an array with a type makes its element typed values. This means that you cannot assign a value of another type to it, as shown in the next example:

my Int @a;
@a = 1, 2, 3;
say @a;
@a[2] = 'Two';

The last assignment causes the type check error:

Type check failed in assignment to @a; expected Int   
but got Str ("Two")
in block <unit> at typed-arr.pl line 7

Typed variables can use any of the built-in types or user-defined classes. In the next section, we will talk about the data types available in Perl 6 by default. In Chapter 8, Object-Oriented Programming, you will learn how to create your own classes.

主站蜘蛛池模板: 荥阳市| 南安市| 民县| 根河市| 太原市| 疏附县| 辰溪县| 广德县| 台中县| 郁南县| 正镶白旗| 鄂伦春自治旗| 华亭县| 岑溪市| 阳高县| 澄江县| 张家港市| 铜川市| 新兴县| 梧州市| 平果县| 达州市| 彰化县| 堆龙德庆县| 旬邑县| 武清区| 四子王旗| 微博| 宝坻区| 若尔盖县| 奎屯市| 伊吾县| 吴堡县| 田东县| 蓬莱市| 萍乡市| 新乡县| 公主岭市| 怀柔区| 临颍县| 策勒县|