Skip to content

kfly8/p5-Boundary

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Actions Status Coverage Status MetaCPAN Release

NAME

Boundary - declare interface package

SYNOPSIS

Declare interface package IFoo:

package IFoo {
    use Boundary;

    requires qw(hello world);
}

Implements the interface package IFoo:

package Foo {
    use Boundary::Impl qw(IFoo);

    sub hello { ... }
    sub world { ... }
}

Use the type ImplOf:

use Boundary::Types -types;
use Foo;

my $type = ImplOf['IFoo'];
my $foo = Foo->new; # implements of IFoo
$type->check($foo); # pass!

DESCRIPTION

This module provides a interface. Boundary declares abstract functions without implementation and defines an interface package. Bounary::Impl checks if the abstract functions are implemented at compile time.

The difference with Role is that the implementation cannot be reused. namespace::allclean prevents the reuse of the implementation.

LICENSE

Copyright (C) kfly8.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

kfly8 kfly8@cpan.org

About

declare interface package

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages