如何将类型参数传递给方法

时间:2017-06-11 04:29:00

标签: scala

我定义了类似这样的类型:

.dittomall-banner {
  display: flex;
  background-color: #ed8c7b;
}
.banner-inner-wrapper {
  margin: 0 auto;
}

现在我创建了一个函数,它希望这个类型作为这样的方法的参数:

type Similarity = (String, Int) => Boolean

我的问题是如何传递参数来计算函数?例如,如果我想传递字符串和数字?

4 个答案:

答案 0 :(得分:0)

例如,你可以写:

calculate((s: String, n: Int) => s.length > n)

答案 1 :(得分:0)

calculate函数将函数作为参数。所以你可以传递这样的匿名函数。

scala> type Similarity = (String, Int) => Boolean
defined type alias Similarity

scala> def calculate(param: Similarity) = { println("hi") }
calculate: (param: Similarity)Unit

scala> calculate((x: String, y: Int) => x.toInt == y )
hi

答案 2 :(得分:0)

您必须创建一个函数,其返回类型是您创建的类型

   def func(x: String, y: Int): Similarity = {
      if(x.equalsIgnoreCase("Joe")) (x, y) => true
      else (x, y) => false
    }

然后,如果你有一个数据

val data = Seq(("Joe", 1))

您可以将计算称为

data.map(x => calculate(func(x._1, x._2)))

答案 3 :(得分:0)

  

我的问题是如何传递参数来计算函数?例如,如果我想传递字符串和数字?

calculate的参数是Similarity不是字符串和数字。您可以将字符串和数字传递到param内的calculate,例如

def calculate(param: Similarity) = param("a", 0) || param("b", 1)

或将参数添加到calculate,例如

def calculate(param: Similarity, x: String, y: Int) = param(x, y + 1)