Variable::Declaration - declare with type constraint
use Variable::Declaration; use Types::Standard '-all'; # variable declaration let $foo; # is equivalent to `my $foo` static $bar; # is equivalent to `state $bar` const $baz; # is equivalent to `my $baz;dlock($baz)` # with type constraint # init case let Str $foo = {}; # => Reference {} did not pass type constraint "Str" # store case let Str $foo = 'foo'; $foo = {}; # => Reference {} did not pass type constraint "Str"
Warning: This module is still new and experimental. The API may change in future versions. The code may be buggy.
Variable::Declaration provides new variable declarations, i.e. let, static, and const.
let
static
const
let is equivalent to my with type constraint. static is equivalent to state with type constraint. const is equivalent to let with data lock.
my
state
The function Variable::Declaration::info lets you introspect return values like Variable::Declaration::Info:
use Variable::Declaration; use Types::Standard -types; let Str $foo = "HELLO"; my $vinfo = Variable::Declaration::info \$foo; $vinfo->declaration; # let $vinfo->type; # Str
You can specify the LEVEL in three stages of checking the specified type:
LEVEL 0 does not check type, LEVEL 1 check type only at initializing variables, LEVEL 2 check type at initializing variables and reassignment. LEVEL 2 is default level.
LEVEL 0
LEVEL 1
LEVEL 2
# CASE: LEVEL 2 (DEFAULT) use Variable::Declaration level => 2; let Int $s = 'foo'; # => ERROR! let Int $s = 123; $s = 'bar'; # => ERROR! # CASE: LEVEL 1 use Variable::Declaration level => 1; let Int $s = 'foo'; # => ERROR! let Int $s = 123; $s = 'bar'; # => NO error! # CASE: LEVEL 0 use Variable::Declaration level => 0; let Int $s = 'foo'; # => NO error! let Int $s = 123; $s = 'bar'; # => NO error!
There are three ways of specifying LEVEL. First, as shown in the example above, pass to the arguments of the module. Next, set environment variable $ENV{Variable::Declaration::LEVEL}. Finally, set $Variable::Declaration::DEFAULT_LEVEL.
$ENV{Variable::Declaration::LEVEL}
$Variable::Declaration::DEFAULT_LEVEL
Copyright (C) kfly8.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
kfly8 <kfly@cpan.org>
To install Variable::Declaration, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Variable::Declaration
CPAN shell
perl -MCPAN -e shell install Variable::Declaration
For more information on module installation, please visit the detailed CPAN module installation guide.