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")
  • 相关阅读:
    一阶段11.16
    视频(一阶段)
    一阶段需求分析
    sprint计划会议内容
    金管家NABCD分析
    四则运算
    返回一个整数数组中最大子数组的和(首尾相连)
    四则运算
    返回一个二维数组最大子数组的和
    返回一个数组 最大子数组的和
  • 原文地址:https://www.cnblogs.com/missmzt/p/5948695.html
Copyright © 2011-2022 走看看