zoukankan      html  css  js  c++  java
  • scala学习:apply方法

    摘抄两段话:

    在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号。
    如 “0 to 2”,实际完整调用是 “0.to(2)”。但 “println(2)” 不能写成 “println 10“”,因为未写出方法调用的接收者 Console,所以可以写成 “Console println 10
    用括号传递给变量(对象)一个或多个参数时,Scala 会把它转换成对 apply 方法的调用;
    与此相似的,当对带有括号并包括一到若干参数的进行赋值时,
    编译器将使用对象的 update 方法对括号里的参数和等号右边的对象执行调用。
    val a  = new Array(1, 2 ,3)
    a(0) 
    实际上调用的是a.apply(0) 这也能解释为什么 Scala 数组取值不用中括号括下标的方式,因为它也是一次方法调用

    举个例子:

    class SomeClass {
        def apply(key: String): String = {
            println("apply method called, key is: " + key)
            "Hello World!"
        }
    }
     
    val anyObject = new SomeClass
    println(anyObject("key1"))

    输出为:

    apply method called, key is: key1
    Hello World!

    update方法:

    greetStrings(0) = "Hello"  实际为:

    greetStrings.update(0, "Hello")
  • 相关阅读:
    读REDIS数据结构
    一致性哈希虚节点解决雪崩问题
    TCP的建立和关闭
    nginx和apache的比较
    进程和线程的区别
    acm过河卒
    搭建centos7 的php环境
    navicat 中 oracle数据传输到mysql上
    安装虚拟机精简版centos7
    整合tomcat的一些配置
  • 原文地址:https://www.cnblogs.com/missmzt/p/5948695.html
Copyright © 2011-2022 走看看