【问题标题】:Scala Newbie Inquiry on Generalizing Parameter DatatypeScala 新手查询泛化参数数据类型
【发布时间】:2016-09-13 15:05:17
【问题描述】:

我对 scala 和一般的函数式编程相当陌生,所以这对某些人来说可能是一个愚蠢的问题。无论如何,我尝试在线搜索,阅读一些教程和书 ScalaByExample 但我还没有找到/到达我可以回答我的询问的部分。

这是我的问题:

我有几个具有这些形式的函数:

def func1(A: Array[Array[DataType]], B: Array[Array[DataType]],
  fn: (DataType, DataType) => PotentiallyDifferentDataType): Array[Array[DataType]] = {
  // Do something in each element using fn   
}

def func2(A: Array[DataType], B: Array[DataType],
  fn: (DataType, DataType) => PotentiallyDifferentDataType) = {
  // Do something for each element using fn
}

我想要做的是创建一个接受一维或二维数组的函数,并对这些数组的元素可能是booleanintfloatdouble 的数组执行逐元素操作.

【问题讨论】:

标签: arrays scala functional-programming


【解决方案1】:

如果您知道 A 和 B(及其成员数组)具有相同的长度:

def func1[T, U](A: Array[Array[T]], B: Array[Array[T]], fn: (T, T) => U):
    Array[Array[U]] =
  A.zip(B) map { case (a, b) => func2(a, b, fn) }

def func2[T, U](A: Array[T], B: Array[T], fn: (T, T) => U): Array[U] =
  A.zip(B) map { case (a, b) => fn(a, b) }

【讨论】:

    猜你喜欢
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2018-06-20
    • 2011-11-25
    • 1970-01-01
    相关资源
    最近更新 更多