---
name: "MooX::Thunking"
section: "3pm"
platform: "linux"
package: "libmoox-thunking-perl"
version: "0.08-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/MooX::Thunking"
---

# MooX::Thunking(3pm)

Allow Moo attributes to be "thunked"

## NAME

MooX::Thunking - Allow Moo attributes to be "thunked"

## SYNOPSIS

```
  package Thunking;
  use Moo;
  use MooX::Thunking;
  use Types::TypeTiny -all;
  use Types::Standard -all;
  has children => (
    is => 'thunked',
    isa => ArrayRef[InstanceOf['Thunking']],
    required => 1,
  );
  package main;
  my $obj;
  $obj = Thunking->new(children => sub { [$obj] });
```

## DESCRIPTION

This is a Moo extension. It allows another value for the `"is"` parameter to "has" in Moo: "thunked". If used, this will allow you to  transparently provide either a real value for the attribute, or a "CodeLike" in Types::TypeTiny that when called will return such a real value.

Note that in earlier versions of this module (up to 0.06), any `"isa"` had to pass a `"CodeLike"`. This is now taken care of by this module. It will continue to do the right thing if no `"isa"` is supplied.

## AUTHOR

Ed J

## LICENCE

The same terms as Perl itself.
