Clojure에서 Clojure BigInt와 Java BigInteger를 사용하는 경우에 대한 지침을 찾고 있습니다. 둘 다 잘 작동합니다. BigInt를 사용하는 가장 큰 이유는 +
과 =
과 같은 연산자를 활용하는 것이고, Java 인스턴스 메서드 .add
과 .equals
을 통해 액세스해야한다고 가정합니다. 하지만 isProbablePrime
과 같이 BigInteger에서만 액세스 할 수있는 연산자는 거의 없습니다.Clojure에서 BigInt 대 BigInteger의 사용 사례
BigInt에서 BigInteger로 또는 그 반대로 이동하는 것은 꽤 쉬운 것처럼 보이지만, 둘 다 존재하면 유스 케이스가 불분명하게됩니다. 제안 된 사용법 중 일부는 작동하지 않는 것처럼 보이기 때문에 명확한 기준이 없으면 BigInteger를 사용하는 것이 좋습니다.
user=> (def x (bigint 97))
user=> (.isProbablePrime x 1)
IllegalArgumentException No matching method found: isProbablePrime for class
clojure.lang.BigInt clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:53)
BigInt (https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/BigInt.java)의 소스 코드를 살펴본 후 BigInt에 둘 다 포함 된 것처럼 보입니다. java.math.Bigint 및 long. Clojure 웹 페이지에는 BigInts가 모든 작업에 걸쳐 유형을 유지한다고 나와 있습니다. isProbablePrime과 같은 메서드를 사용하고 java.math.BigInteger로 쉽게 생성 할 수 없다는 점을 고려하여 .toBigInteger 및 .fromBigInteger를 사용하여 쉽게 캐스팅 할 수 있다고 가정 할 때 bigint를 사용하여 앞으로 캐스팅합니다. 필요할 경우 다시 가져옵니다 (BigInts는 .add에서이 작업을 직접 수행합니다). –
사실 그것은'clojure.lang.BigInt/fromBigInteger'입니다; 여기에 예제를 추가했습니다. http://clojuredocs.org/clojure_core/clojure.core/bigint –
우연히 lucas 번호를 사용 했습니까? – Carcigenicate