zoukankan      html  css  js  c++  java
  • 大三寒假学习 spark学习 Scala面向对编程 对象(apply方法与update方法)

    Apply方法:

      

    • Scala自动调用Array类的伴生对象Array中的一个称为apply的方法,来创建一个Array对象myStrArr。
    • apply方法调用约定:用括号传递给类实例或单例对象名一个或多个参数时,Scala 会在相应的类或对象中查找方法名为apply且参数列表与传入的参数一致的方法,并用传入的参数来调用该apply方法。

      下面为代码示例

    class TestApplyclass {
        def apply(param: String): String ={
            println("apply method called,parameter is:" +param)
         "Hello wor1d !" } } val myobject = new TestApplyclass println(myobject( "param1"))

    在单例对象中定义apply方法:

    object TestApplysingleobject {
        def apply(param1:String,param2: String): String = {
            println( "apply method called")
            param1 +" and " + param2
        }
    }
    val group =TestApplysingleobject("Zhangfei", "Liubei")
    println(group)

    可以看出,在执行TestApplySingleObject("Zhangfei" , "Liubei")时调用了apply方法,并且把“Zhangfei and Liubei”作为返回值,赋值给group变量,因此,println(group)语句会打印出“Zhangfei and Liubei"

     伴生类和伴生对象中的apply:

    class TestApplyClassAndObject {}
    class ApplyTest{
        def apply() = println("apply method in class is called! ")
        def greetingofclass: Unit ={
            println("Greeting method in class is called.")
        }
    }
    object ApplyTest{
        def apply()={
            println("apply method in object is called")
            new ApplyTest()
        }
    }
    object TestApplyClassAndObject{
        def main (args: Array [String]){
            val a= ApplyTest()//这里会调用伴生对象中的apply方法
            a.greetingofclass
            a()//这里会词用伴生类中的apply方法
        }
    }

      从上面代码可以看出,当我们执行val a = ApplyTest(0时,会导致apply方法的调用并返回该方法调用的值,也就是ApplyTest的实例化对象。当执行a()时,又会导致调用伴生类的apply方法,如果我们愿意,就可以在伴生类的apply方法中写入一些处理逻辑,这样就可以把传入的参数赋值给实例化对象的变量

    update方法:

      当对带有括号并包括一到若干参数的对象进行赋值时,编译器将调用对象的update方法,在调用时,是把括号里的参数和等号右边的对象一起作为update方法的输入参数来执行调用

      

      从上面可以看出,在进行元组赋值的时候,之所以没有采用Java中的方括号myStrArr[O]而是采用圆括号的形式,myStrArr(O),是因为存在上述的update方法的机制

  • 相关阅读:
    部分数据文件损坏的修复处理示例.sql
    使用UPDATE进行编号重排的处理示例.sql
    DNS Prefetching 技术引入及实现方法
    查找指定节点的所有子节点的示例函数.sql
    特殊的交叉报表处理示例.sql
    定时备份FTP+Mysql到云服务器
    cPanel下安装GodaddySSL教程
    移动节点处理的通用存储过程.sql
    应用程序角色使用示例.sql
    文件及文件组备份与还原示例.sql
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/15806717.html
Copyright © 2011-2022 走看看