编写一个Scala函数,在调用时返回一个函数

时间:2014-12-08 21:55:21

标签: scala functional-programming higher-order-functions

假设值为x的典型哈希函数:

h(x) = ( a * x + b ) % R

我想编写一个scala函数说buildHashFunction,每次执行时都会返回一个新的hashFunction(使用a和b的随机值)。 R可以硬编码为相同。

然后,我们的想法是使用生成的hashFunction来确定性地计算数字的哈希值。

1 个答案:

答案 0 :(得分:3)

最明显的方法可以正常工作:

val r = new SecureRandom()
val R = r.nextInt()

def buildHashFunction(): Int => Int = {      
  val a = r.nextInt()
  val b = r.nextInt()
  def hashFunction(x: Int) =
    ( a * x + b ) % R

  hashFunction
}