1
我试图用另一种语言(例如Ruby)重现Erlang phash的确切行为。有谁知道它的实现细节?Erlang Phash实现
基本上,如果在二郎: erlang:phash(X, n) -> Y
我想在Ruby中是 phash(X,n) = Y
。
我试图用另一种语言(例如Ruby)重现Erlang phash的确切行为。有谁知道它的实现细节?Erlang Phash实现
基本上,如果在二郎: erlang:phash(X, n) -> Y
我想在Ruby中是 phash(X,n) = Y
。
要看看它是如何工作的,检查原代码:https://github.com/erlang/otp/blob/cbd1378ee1fde835e55614bac9290b281bafe49a/erts/emulator/beam/utils.c#L644
但你不能在另一种语言phash的“精确”的行为 - 只是因为你没有可用有Erlang的数据类型做。 (除非你创建自己的映射当然)
首先,你应该复制`phash2`,除非有特定的要求来匹配`phash`。然而,更大的问题是phash和phash2是专门为Erlang的类型系统设计的。你是否想要实现一个精确的镜像,以两种语言生成相同的散列,或者只是复制基本思想?甚至复制这个想法也是充满的,因为Erlang的类型系统基本上是固定的。它没有关于类,用户定义类型或信息隐藏的概念。 – 2010-11-27 03:25:00
不幸的是,我没有太多的选择,因为我需要重现ejabberd在负载平衡组件和它使用`phash`时使用的确切模式。 – 2010-11-27 03:27:09