私はそれがコンテキストに多くを依存し、有意義なメタファーを選択すると思う:重要なのは、これは通常クラス方法ではなく、(サブクラスの利益のために)静的メソッドとして定義されています。例えば、ActiveRecordは、データベース内のレコードを見つけるためのクラスメソッド "find"を使用します。これは、 "user_idを入力してユーザを出力する"より意味のある考えです。たとえば、次のように変換するために
User.find(user_id)
User.find_by_email(user_email)
は、私は通常、高階関数では使用することを容易にするために変換方法を書くのが好き。ルビーの例では、変換は、多くの場合、あなたが書くことができるので、それは、すべてのFOOSためto_bar
方法を有することは理にかなってBar
にFoo
を変換する例えばto_*
インスタンスメソッド、で行われています。
foo = Foo.new(...) # make a new Foo
bar = foo.to_bar # convert it to a Bar
そして、 FOOSの束を変換するために、あなたは可能性があり、単純に:
bars = foos.map(&:to_bar)
Rubyは、オブジェクトに文字列を変換するためのFoo.parse(str)
を持っている傾向があります。JavaScriptが
、私は例えば、(私は標準ミリリットルからもらった)クラスメソッドを持つよう:
Foo.toBar = function(foo) {
return new Bar(...);
};
そして、あなたは(この例では、アンダースコアを使用して)だけでなく、その上にマッピングすることができます:
var bars = _.map(foos, Foo.toBar);
標準ML規則は、構造体(クラス)メソッドです。例FNタイプ:
Foo.toBar : foo -> bar
Foo.fromBar : bar -> foo
そして、あなたはそれを使用したいが好き:
val bar = Foo.toBar foo;
val bars = map Foo.toBar foos;
私はUser.from_user_id(user_id)が好きです – Patashu