1

Javaで文字列配列がある場合

public static void main (String [] args)
{
      int x = Integer.parseInt(args[2]);
}

clojure でこのコードに相当するものは何ですか?

4

1 に答える 1

5

Clojure は Java メソッドを直接呼び出すことができるため、関数に String 配列が渡されると仮定すると、次のようにすることができます。

(defn my-parse [args]
  (Integer/parseInt (aget args 2)))

注意事項:

  • agetJava配列から要素を取得する関数です。
  • この構文(ClassName/methodName ...)は、Clojure で Java 静的メソッドを呼び出すために使用されます。
  • Clojure は、適切なメソッド実装を選択する必要がある場合、自動的にリフレクションを使用します。したがって、この場合、コンパイル時にargs配列に格納されているオブジェクトのタイプを知る必要はありません-実行時にそれらが文字列であることがわかり、それに応じて処理されます

また、 Clojureが実際にJava 配列を分解できることも注目に値します。したがって、次のこともできます。

(defn my-parse [[s0 s1 s2 & more-strings]]
  (Integer/parseInt s2))

このコードでs0は、最初の配列要素、s12 番目、s23番目の配列要素の値を取り、more-strings残りの引数のシーケンスです

于 2013-01-02T03:59:57.723 に答える