私は最初の文字列が2番目の文字列で終わるかどうかをチェックする関数を作成しました。 Javaではクローズで文字列が指定された文字列で終わるかどうかを調べる
我々はこれを確認するには既製の方法を持っていますが、次のようにClojureの中で、私はそのような方法ので、私は書かれたカスタム関数を見つけることができませんでした:
(defn endWithFun [arg1 arg2]
(= (subs arg1 (- (count arg1) (count arg2)) (count arg1)) arg2))
出力:
> (endWithFun "swapnil" "nil")
true
> (endWithFun "swapnil" "nilu")
false
これを期待どおりに動作しています。
私が知りたいのは、似たような選択肢がありますか? 私の場合も、大文字と小文字を区別して比較します。大文字と小文字の区別も無視したい。
ありがとう、これは私が探していたものです。私は '(.swapbil" 1 4) 'と'(。swapnil "substring 1 4)'を試してみました。 * wap **、clojureでjavaを使用するとパフォーマンスが低下しますか?または両方が同じパフォーマンスを持つことになります。 – swapy
私はパフォーマンスが同等であるべきだと思います。気になる場合は、マイクロベンチマークを作成することができます。 –
一般に、ClojureでJavaを使用するとパフォーマンスが低下する可能性があるのは、コンパイル時にオブジェクトのクラスを推測できない場合に、リフレクションを使用して実行時にメソッドをルックアップすることだけです。 'clojure.string'関数はすべてリフレクションを避けるために型ヒントを使用しているので、ClojureとJavaのバージョン間のパフォーマンスの差はごくわずかです。 – Alex