NAME / 名称
MooseX::Types::Moose::MutualCoercion::JA - (ja) Mooseの一般的な型制約のための相互型変換
バージョン
この文書はMooseX::Types::Moose::MutualCoercionのバージョン0.04
について記述しています。
概要
{
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::Load::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
)について。
非互換性
互換性のない変更点はありません。
バグと制約事項
バグは報告されていません。
提案やバグ報告の方法
何かバグを発見されたら、機能のご要望がありましたら、または改善のためのご意見がありましたら、メール(<bug-moosex-types-moose-mutualcoercion at rt.cpan.org>
宛)で報告してください。 または、Webインターフェース(http://rt.cpan.org/Public/Bug/Report.html?Queue=MooseX-Types-Moose-MutualCoercion)を使って報告してください。 これによって、その報告内容が開発者へ通知されます。 さらに、バグや要望の対応状況について、報告者が通知を自動的に受けることも出来ます。
バグを報告いただく際には、もし可能であれば、バグを再現するための出来るだけ少量のサンプルコードを添えてください。 提案やパッチは勿論歓迎します。
サポート
このモジュールの文書はperldoc
コマンドで閲覧出来ます。
% perldoc MooseX::Types::Moose::MutualCoercion
日本語版はPod::PerldocJpを使ったperldocjp
コマンドで閲覧出来ます。
% perldocjp MooseX::Types::Moose::MutualCoercion::JA
また、以下の場所も参照してください:
- RT: CPAN's request tracker
-
http://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Types-Moose-MutualCoercion
- AnnoCPAN: Annotated CPAN documentation
- Search CPAN
-
http://search.cpan.org/dist/MooseX-Types-Moose-MutualCoercion
- CPAN Ratings
-
http://cpanratings.perl.org/dist/MooseX-Types-Moose-MutualCoercion
バージョン管理
このモジュールはGitを使って保守されています。
最新版はgit://github.com/gardejo/p5-moosex-types-moose-mutualcoercion.gitにあります。
今後の予定
テストの拡充
著者
- 守屋 雅樹 (Gardejo) (en: MORIYA Masaki, alias Gardejo)
-
<moriya at cpan dot org>
, http://gardejo.org/
訳註: 訳者
- 守屋 雅樹 (Gardejo) (en: MORIYA Masaki, alias Gardejo)
-
<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.