0

def fooと が少し異なるAPI をいくつか見たことがありますが、これが「似ているが少し違うdef foo1」以外に何を意味するのかわかりません。「Ex」を思い出します (「Ex」は、Windows API 関数名で何を表していますか? )foo1foo

これは Haskell/FP または数学的な規則への参照だと思いますが、それはただの foo-prime ですか?

暗示されている意味はありますか(特定の方法でfoo1関連付けるfoo必要があります)、それとも「2つの同様の関数が必要で、オーバーロードがあいまいでした。ねじ込み、最後に1を付けましょう」という意味ですか? 「これら2つの機能は何らかの形で関連している」以上のことを想定する必要がありますか?

4

3 に答える 3

2

私が考えることができる例は、でrepあり、ここで、は任意の数の繰り返しであり、は1回以上の繰り返しです。N回の繰り返しの方法もあるので、ここでは接尾辞の意味がかなり明白です。rep1scala.util.parsing.combinator.Parsersreprep1repN1

于 2012-06-25T15:58:59.637 に答える
1

その文脈がおそらくここでのすべてだと思います。私が思いつく唯一の例はscalazfoldl1のメソッドです。ライブラリの作成者が間違いなく指摘しているように、メソッドが実際に行うことは、型自体を見て完全に透過的です。

trait MA[M[_], A] {
  def foobar(f: (A, A) => A)(implicit FoldableM: Foldable[M]): Option[A]
}

ただし、この場合、明らかに の特別な形式ですfoldl。つまり、左に折りたたむが、明示的に指定された value ではなく、シードとして 1 番目の要素を使用します。したがってfoldl1、文脈において賢明で直感的です。

あなたはこれを数回見たと言いましたが、他の出来事を指摘できますか?

于 2012-06-25T15:55:34.153 に答える
0

Scala には Function や Tuple などの型が含まれており、これらには型のファミリーがあり、各メンバーは引数の数に応じて名前が付けられています。

Function1[T1] => R
Function2[T1, T2] => R

Tuple1[T1]
Tuple2[T1, T2]

どちらの場合も、型の名前は異なる必要があり、引数の数を使用することは型を記述する優れた方法です (Function4 は 4 つの引数を取る関数の型であり、Tuple3 は 3 つの項目を含む Tuple の型です)。

他の回答が言っているように、いくつかのコンテキストを持っていると役立ちますが、標準ライブラリのこれらの選択によって (正しいか間違っているかを問わず) インスピレーションを得ている可能性があります。

于 2012-06-26T17:26:45.733 に答える