【问题标题】:scala function with various input data types具有各种输入数据类型的 scala 函数
【发布时间】:2016-05-06 22:04:44
【问题描述】:

有没有一种方法可以在 scala 中创建一个可以输入各种类型参数输入的函数?请参考下面的示例代码。我想把下面的代码变成一个函数,可以接受各种数据类型的输入。

例子:

/** */
def toMatrix(A: Array[Double], m:Int, n:Int): Array[Array[Double]] = {
    var A_ = Array.apply(A.slice(0,n),A.slice(n*1,n*1+n))
    for (i <- 2 to (m-1)){
        A_ = A_ ++ Array(A.slice(n*i,(n*i)+n))
        }
    A_
}


/** */
def toMatrixInt(A: Array[Int], m:Int, n:Int): Array[Array[Int]] = {
    var A_ = Array.apply(A.slice(0,n),A.slice(n*1,n*1+n))
    for (i <- 2 to (m-1)){
        A_ = A_ ++ Array(A.slice(n*i,(n*i)+n))
        }
    A_
}

/** */
def toMatrixBoolean(A: Array[Boolean], m:Int, n:Int) = {
    var A_ = Array.apply(A.slice(0,n),A.slice(n*1,(n*1)+n))
    for (i <- 2 to (m-1)){
        A_ = A_ ++ Array(A.slice(n*i,(n*i)+n))
        }
    A_
}

【问题讨论】:

    标签: scala apache-spark functional-programming


    【解决方案1】:

    是的。而且你也不需要可变变量和丑陋的命令循环:) 如果您使用的是 scala 语法,不妨花一两分钟时间来学习实际使用该语言:/

    def toMatrix[T : ClassTag](a: Array[T], m:Int, n:Int) = a.grouped(n).toArray
    

    【讨论】:

      【解决方案2】:

      显然,您在谈论 Java 世界中的类型参数化或泛型。你应该去阅读它——互联网上有很多关于这个主题的信息和书籍。来自 alvinalexander.com 的一些示例:

      http://alvinalexander.com/scala/scala-classes-using-generic-types-examples

      我个人向您推荐 Martin Odersky 等人的《Scala 编程》一书。它现在有点老了,但它写得很完美,完全涵盖了语言。

      【讨论】:

        猜你喜欢
        • 2012-08-31
        • 1970-01-01
        • 2011-05-17
        • 2010-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-01
        • 1970-01-01
        相关资源
        最近更新 更多