The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Venus::Kind::Value - Value Base Class

ABSTRACT

Value Base Class for Perl 5

SYNOPSIS

  package Example;

  use Venus::Class;

  base 'Venus::Kind::Value';

  package main;

  my $example = Example->new;

  # $example->defined;

DESCRIPTION

This package provides identity and methods common across all Venus value classes.

INHERITS

This package inherits behaviors from:

Venus::Kind

INTEGRATES

This package integrates behaviors from:

Venus::Role::Accessible

Venus::Role::Buildable

Venus::Role::Explainable

Venus::Role::Pluggable

Venus::Role::Valuable

METHODS

This package provides the following methods:

cast

  cast(Str $kind) (Object | Undef)

The cast method converts "value" objects between different "value" object types, based on the name of the type provided. This method will return undef if the invocant is not a Venus::Kind::Value.

Since 0.08

cast example 1
  package main;

  my $example = Example->new;

  my $cast = $example->cast;

  # bless({value => undef}, "Venus::Undef")
cast example 2
  package main;

  my $example = Example->new(
    value => 123.45,
  );

  my $cast = $example->cast('array');

  # bless({value => [123.45]}, "Venus::Array")
cast example 3
  package main;

  my $example = Example->new(
    value => 123.45,
  );

  my $cast = $example->cast('hash');

  # bless({value => {'123.45' => 123.45}, "Venus::Hash")

defined

  defined() (Int)

The defined method returns truthy or falsy if the underlying value is "defined".

Since 0.01

defined example 1
  package main;

  my $example = Example->new;

  my $defined = $example->defined;

  # 0
defined example 2
  package main;

  my $example = Example->new(time);

  my $defined = $example->defined;

  # 1

explain

  explain() (Any)

The explain method returns the value set and is used in stringification operations.

Since 0.01

explain example 1
  package main;

  my $example = Example->new('hello, there');

  my $explain = $example->explain;

  # "hello, there"