MooseX::Types::Moose::MutualCoercion::JA - (ja) Mooseの一般的な型制約のための相互型変換
この文書はMooseX::Types::Moose::MutualCoercionのバージョン0.03について記述しています。
0.03
{ package Foo; use Moose; use MooseX::Types::Moose::MutualCoercion qw(StrToArrayRef ArrayRefToHashKeys); has 'thingies' => (is => 'rw', isa => StrToArrayRef, coerce => 1); has 'lookup_table' => (is => 'rw', isa => ArrayRefToHashKeys, coerce => 1); 1; } my $foo = Foo->new( thingies => 'bar' ); print $foo->thingies->[0]; # 'bar' $foo->lookup_table( [qw(baz qux)] ); print 'eureka!' # 'eureka!' if grep { exists $foo->lookup_table->{$_}; } qw(foo bar baz);
MooseX::Types::Moose::MutualCoercionの文書の大部分は他の言語に翻訳されています。
MooseX::Types::Moose::MutualCoercion
MooseX::Types::Moose::MutualCoercion::JA (この文書)
このモジュールは型変換付きのいくつかのMoose::Util::TypeConstraints型制約をまとめたものです。 Mooseでよく知られている組み込みおよび一般的な型を相互に型変換するために設計されています。
註: これらの型制約はデフォルトでは何もエクスポートされません。 以下のようにインポートリストを使ってインポートしてください:
use MooseX::Types::Moose::MutualCoercion qw(NumToInt ScalarRefToStr);
Int
NumToInt
Intのサブタイプです。 coerceを有効にした場合、Numは整数になります。 例えば、3.14は3に変換されます。
coerce
Num
3.14
3
Str
ScalarRefToStr
Strのサブタイプです。 coerceを有効にした場合、ScalarRef[Str]はデリファレンスされた文字列になります。 例えば、\do{'foo'}はfooに変換されます。
ScalarRef[Str]
\do{'foo'}
foo
ArrayRefToLines
Strのサブタイプです。 coerceを有効にした場合、ArrayRef[Str]の全ての要素は$/で結合されます。 例えば、[qw(foo bar baz)]はfoo\nbar\nbaz\nに変換されます。
ArrayRef[Str]
$/
[qw(foo bar baz)]
foo\nbar\nbaz\n
註: 最後の要素にも$/が付加されます。
ClassName
StrToClassName
警告: この型制約・型変換は非推奨です。 これの代わりに、MooseX::Types::LoadableClassのLodableClass を使ってください。 さらに、MooseX::Types::LoadableClass にはLodableRoleも備わっています。
ClassNameのサブタイプです。 coerceを有効にした場合、MooseX::Types::Common::String由来のNonEmptyStrはクラス名として扱われます。 それがまだロードされていなければ、Class::MOP::load_class()によってロードされます。
NonEmptyStr
ScalarRef
StrToScalarRef
ScalarRef[Str]のサブタイプです。 coerceを有効にした場合、Strはリファレンスになります。 例えば、fooは\do{'foo'}に変換されます。
ArrayRef
StrToArrayRef
ArrayRefのサブタイプです。 coerceを有効にした場合、Strは配列リファレンスの最初の要素に割り当てられます。 例えば、fooは[qw(foo)]に変換されます。
[qw(foo)]
LinesToArrayRef
ArrayRefのサブタイプです。 coerceを有効にした場合、Strは$/によって分割され、配列リファレンスの各要素に割り当てられます。 例えば、foo\nbar\nbaz\nは["foo\n", "bar\n", "baz\n"]に変換されます。
["foo\n", "bar\n", "baz\n"]
註: $/は取り除かれません。
HashRefToArrayRef
ArrayRefのサブタイプです。 coerceを有効にした場合、HashRefは平坦化されて配列リファレンスになります。 例えば、{foo => 0, bar => 1}は[qw(bar 1 foo 0)]に変換されます。
HashRef
{foo => 0, bar => 1}
[qw(bar 1 foo 0)]
註: キー/値の順番は辞書順に並べ替えられたキーと同じです。
HashKeysToArrayRef
ArrayRefのサブタイプです。 coerceを有効にした場合、HashRefの辞書順に並び替えられたキーのリストは配列リファレンスになります。 例えば、{foo => 0, bar => 1}は[qw(bar foo)]に変換されます。
[qw(bar foo)]
HashValuesToArrayRef
ArrayRefのサブタイプです。 coerceを有効にした場合、HashRefの値のリストは配列リファレンスになります。 例えば、{foo => 0, bar => 1}は[qw(1 0)]に変換されます。
[qw(1 0)]
註: 値の順番は辞書順に並べ替えられたキーと同じです。
OddArrayRef
ArrayRefのサブタイプで、要素が奇数個であるという制約が加えられています。 coerceを有効にした場合、偶数個の要素を持つArrayRefへはその最後の要素としてundefが付け加えられます。 例えば、[qw(foo bar)]は[qw(foo bar), undef]に変換されます。
undef
[qw(foo bar)]
[qw(foo bar), undef]
EvenArrayRef
ArrayRefのサブタイプで、要素が偶数個であるという制約が加えられています。 coerceを有効にした場合、奇数個の要素を持つArrayRefへはその最後の要素としてundefが付け加えられます。 例えば、[qw(foo)]は[qw(foo), undef]に変換されます。
[qw(foo), undef]
ArrayRefToHashRef
HashRefのサブタイプです。 coerceを有効にした場合、EvenArrayRefの全ての要素はハッシュリファレンスに代入されます。 例えば、[qw(foo 0 bar 1)]は{foo => 0, bar => 1}に変換されます。
[qw(foo 0 bar 1)]
ArrayRefToHashKeys
HashRefのサブタイプです。 coerceを有効にした場合、ArrayRefの全ての要素はハッシュリファレンスのキーに代入されます。 例えば、[qw(foo bar baz)]は{foo => undef, bar => undef, baz => undef}に変換されます。
{foo => undef, bar => undef, baz => undef}
RegexpRef
ArrayRefToRegexpRef
RegexpRefのサブタイプです。 coerceを有効にした場合、ArrayRefの全ての要素は|(代替を示すメタ文字)で結合され、正規表現リファレンスになります。 例えば、[qw(foo bar baz)]はqr{foo|bar|baz}に変換されます。
|
qr{foo|bar|baz}
註: Regexp::Assembleを動的に(つまり実行時に)ロード出来る場合、正規表現リファレンスはそのモジュールを用いて構築されます。 例えば、[qw(foo bar baz)]はqr{(?:ba[rz]|foo)}に変換されます。
qr{(?:ba[rz]|foo)}
Moose::Manual::Types
MooseX::Types
MooseX::Types::Moose
MooseX::Types::LoadableClass
MooseX::Types::Common
特殊変数$/($RS, $INPUT_RECORD_SEPARATOR)について。
$RS
$INPUT_RECORD_SEPARATOR
perlvar
互換性のない変更点はありません。
バグは報告されていません。
何かバグを発見されたら、機能のご要望がありましたら、または改善のためのご意見がありましたら、メール(<bug-moosex-types-moose-mutualcoercion at rt.cpan.org>宛)で報告してください。 または、Webインターフェース(http://rt.cpan.org/Public/Bug/Report.html?Queue=MooseX-Types-Moose-MutualCoercion)を使って報告してください。 これによって、その報告内容が開発者へ通知されます。 さらに、バグや要望の対応状況について、報告者が通知を自動的に受けることも出来ます。
<bug-moosex-types-moose-mutualcoercion at rt.cpan.org>
バグを報告いただく際には、もし可能であれば、バグを再現するための出来るだけ少量のサンプルコードを添えてください。 提案やパッチは勿論歓迎します。
このモジュールの文書はperldocコマンドで閲覧出来ます。
perldoc
% perldoc MooseX::Types::Moose::MutualCoercion
日本語版はPod::PerldocJpを使ったperldocjpコマンドで閲覧出来ます。
perldocjp
% perldocjp MooseX::Types::Moose::MutualCoercion::JA
また、以下の場所も参照してください:
http://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Types-Moose-MutualCoercion
http://annocpan.org/dist/MooseX-Types-Moose-MutualCoercion
http://search.cpan.org/dist/MooseX-Types-Moose-MutualCoercion
http://cpanratings.perl.org/dist/MooseX-Types-Moose-MutualCoercion
このモジュールはGitを使って保守されています。
最新版はgit://github.com/gardejo/p5-moosex-types-moose-mutualcoercion.gitにあります。
テストの拡充
<moriya at cpan dot org>, http://gardejo.org/
<moriya at cpan dot org>
著作権保有 (c) 2010 守屋 雅樹 (Gardejo)
このモジュールはフリーソフトウェアです。 あなたはこれをPerlと同じように自由に再配布・改変することが出来ます。 詳しくはperlgplおよびperlartisticを参照してください。
使用許諾条件の全文はこのディストリビューションに同梱されているLICENSEファイルにあります。
Copyright (c) 2010 MORIYA Masaki, alias Gardejo
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlgpl and perlartistic.
The full text of the license can be found in the LICENSE file included with this distribution.
To install MooseX::Types::Moose::MutualCoercion, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooseX::Types::Moose::MutualCoercion
CPAN shell
perl -MCPAN -e shell install MooseX::Types::Moose::MutualCoercion
For more information on module installation, please visit the detailed CPAN module installation guide.