8

私は以下を広範囲に利用する必要があります:

slice :: Int -> Int -> ByteString -> ByteString
slice start len = take len . drop start

2 つの部分からなる質問:

  1. これってもう名前あるの?Hoogle でそのタイプを検索しても何も見つかりませんが、非常に一般的なニーズのようです。(Int, Int) -> ByteString -> ByteStringまた、同じもののいくつかflipのバージョンを検索してみました。[a]また、一般的に使用されている名前があるかどうかを確認するために、バージョンを探してみました。
  2. もっと良い書き方はないでしょうか?

多くの人が同じ道をたどっていることを強く期待していたので、何か間違ったことをしているのではないかと疑っていますが、私のgoogle-fuは何も見つけていません。

4

2 に答える 2

8

慣用的な方法は via takeandであり、厳密なバイト文字列dropではO(1)の複雑さがあります。

slice安全でないインデックス作成操作への依存を思いとどまらせるために、提供されていません。

于 2013-05-31T07:24:08.223 に答える