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"