| MooseX::Types::Moose::MutualCoercion::JA - Mooseの一般的な型制約のための相互型変換 |
MooseX::Types::Moose::MutualCoercion::JA - (ja) Mooseの一般的な型制約のための相互型変換
この文書はMooseX::Types::Moose::MutualCoercionのバージョン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の文書の大部分は他の言語に翻訳されています。
このモジュールは型変換付きのいくつかのMoose::Util::TypeConstraints型制約をまとめたものです。 Mooseでよく知られている組み込みおよび一般的な型を相互に型変換するために設計されています。
註: これらの型制約はデフォルトでは何もエクスポートされません。 以下のようにインポートリストを使ってインポートしてください:
use MooseX::Types::Moose::MutualCoercion qw(NumToInt ScalarRefToStr);
IntへNumToInt
Intのサブタイプです。
coerceを有効にした場合、Numは整数になります。
例えば、3.14は3に変換されます。
StrへScalarRefToStr
Strのサブタイプです。
coerceを有効にした場合、ScalarRef[Str]はデリファレンスされた文字列になります。
例えば、\do{'foo'}はfooに変換されます。
ArrayRefToLines
Strのサブタイプです。
coerceを有効にした場合、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()によってロードされます。
ScalarRefへStrToScalarRef
ScalarRef[Str]のサブタイプです。
coerceを有効にした場合、Strはリファレンスになります。
例えば、fooは\do{'foo'}に変換されます。
ArrayRefへStrToArrayRef
ArrayRefのサブタイプです。
coerceを有効にした場合、Strは配列リファレンスの最初の要素に割り当てられます。
例えば、fooは[qw(foo)]に変換されます。
LinesToArrayRef
ArrayRefのサブタイプです。
coerceを有効にした場合、Strは$/によって分割され、配列リファレンスの各要素に割り当てられます。
例えば、foo\nbar\nbaz\nは["foo\n", "bar\n", "baz\n"]に変換されます。
註: $/は取り除かれません。
HashRefToArrayRef
ArrayRefのサブタイプです。
coerceを有効にした場合、HashRefは平坦化されて配列リファレンスになります。
例えば、{foo => 0, bar => 1}は[qw(bar 1 foo 0)]に変換されます。
註: キー/値の順番は辞書順に並べ替えられたキーと同じです。
HashKeysToArrayRef
ArrayRefのサブタイプです。
coerceを有効にした場合、HashRefの辞書順に並び替えられたキーのリストは配列リファレンスになります。
例えば、{foo => 0, bar => 1}は[qw(bar foo)]に変換されます。
HashValuesToArrayRef
ArrayRefのサブタイプです。
coerceを有効にした場合、HashRefの値のリストは配列リファレンスになります。
例えば、{foo => 0, bar => 1}は[qw(1 0)]に変換されます。
註: 値の順番は辞書順に並べ替えられたキーと同じです。
OddArrayRef
ArrayRefのサブタイプで、要素が奇数個であるという制約が加えられています。
coerceを有効にした場合、偶数個の要素を持つArrayRefへはその最後の要素としてundefが付け加えられます。
例えば、[qw(foo bar)]は[qw(foo bar), undef]に変換されます。
EvenArrayRef
ArrayRefのサブタイプで、要素が偶数個であるという制約が加えられています。
coerceを有効にした場合、奇数個の要素を持つArrayRefへはその最後の要素としてundefが付け加えられます。
例えば、[qw(foo)]は[qw(foo), undef]に変換されます。
HashRefへArrayRefToHashRef
HashRefのサブタイプです。
coerceを有効にした場合、EvenArrayRefの全ての要素はハッシュリファレンスに代入されます。
例えば、[qw(foo 0 bar 1)]は{foo => 0, bar => 1}に変換されます。
ArrayRefToHashKeys
HashRefのサブタイプです。
coerceを有効にした場合、ArrayRefの全ての要素はハッシュリファレンスのキーに代入されます。
例えば、[qw(foo bar baz)]は{foo => undef, bar => undef, baz => undef}に変換されます。
RegexpRefへArrayRefToRegexpRef
RegexpRefのサブタイプです。
coerceを有効にした場合、ArrayRefの全ての要素は|(代替を示すメタ文字)で結合され、正規表現リファレンスになります。
例えば、[qw(foo bar baz)]はqr{foo|bar|baz}に変換されます。
註: Regexp::Assembleを動的に(つまり実行時に)ロード出来る場合、正規表現リファレンスはそのモジュールを用いて構築されます。
例えば、[qw(foo bar baz)]はqr{(?:ba[rz]|foo)}に変換されます。
特殊変数$/($RS, $INPUT_RECORD_SEPARATOR)について。
perlvar
互換性のない変更点はありません。
バグは報告されていません。
何かバグを発見されたら、機能のご要望がありましたら、または改善のためのご意見がありましたら、メール(<bug-moosex-types-moose-mutualcoercion at rt.cpan.org>宛)で報告してください。
または、Webインターフェース(http://rt.cpan.org/Public/Bug/Report.html)を使って報告してください。
これによって、その報告内容が開発者へ通知されます。
さらに、バグや要望の対応状況について、報告者が通知を自動的に受けることも出来ます。
バグを報告いただく際には、もし可能であれば、バグを再現するための出来るだけ少量のサンプルコードを添えてください。 提案やパッチは勿論歓迎します。
このモジュールの文書はperldocコマンドで閲覧出来ます。
% perldoc MooseX::Types::Moose::MutualCoercion
日本語版はPod::PerldocJpを使ったperldocjpコマンドで閲覧出来ます。
% perldocjp MooseX::Types::Moose::MutualCoercion::JA
また、以下の場所も参照してください:
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>,
http://gardejo.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.
| MooseX::Types::Moose::MutualCoercion::JA - Mooseの一般的な型制約のための相互型変換 |