Movatterモバイル変換


[0]ホーム

URL:


functions /state
(source,CPAN)
You are viewing the version of this documentation from Perl 5.40.1.View the latest version
#state VARLIST
#state TYPE VARLIST
#state VARLIST : ATTRS
#state TYPE VARLIST : ATTRS

state declares a lexically scoped variable, just likemy. However, those variables will never be reinitialized, contrary to lexical variables that are reinitialized each time their enclosing block is entered. See"Persistent Private Variables" in perlsub for details.

If more than one variable is listed, the list must be placed in parentheses. With a parenthesised list,undef can be used as a dummy placeholder. However, since initialization of state variables in such lists is currently not possible this would serve no purpose.

Likemy,local, andour,state can operate on a variable anywhere it appears in an expression (aside from interpolation in strings). The declaration will not apply to additional uses of the same variable until the next statement. This means additional uses of that variable within the same statement will act as they would have before that declaration occurred, or result in a strict 'vars' error, as appropriate.

package main;use feature 'state';our $x = 2;foo($x, state $x = $x + 1, $x); # foo() receives (2, 3, 2)foo($x, $main::x);              # foo() receives (3, 2)

Redeclaring a variable in the same scope or statement will "shadow" the previous declaration, creating a new instance and preventing access to the previous one. This is usually undesired and, if warnings are enabled, will result in a warning in theshadow category.

state is available only if the"state" feature is enabled or if it is prefixed withCORE::. The"state" feature is enabled automatically with ause v5.10 (or higher) declaration in the current scope.

Perldoc Browser is maintained by Dan Book (DBOOK). Please contact him via theGitHub issue tracker oremail regarding any issues with the site itself, search, or rendering of documentation.

The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via thePerl issue tracker, themailing list, orIRC to report any issues with the contents or format of the documentation.


[8]ページ先頭

©2009-2025 Movatter.jp