scala学习:apply方法
摘抄两段话:
在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号。
如 “ to ”,实际完整调用是 “.to()”。但 “println()” 不能写成 “println “”,因为未写出方法调用的接收者 Console,所以可以写成 “Console println ”
用括号传递给变量(对象)一个或多个参数时,Scala 会把它转换成对 apply 方法的调用;
与此相似的,当对带有括号并包括一到若干参数的进行赋值时,
编译器将使用对象的 update 方法对括号里的参数和等号右边的对象执行调用。
val a = new Array(, ,)
a()
实际上调用的是a.apply() 这也能解释为什么 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() = "Hello" 实际为:greetStrings.update(0,"Hello")
scala学习:apply方法的更多相关文章
- scala的apply方法
package com.test.scala.test /** * apply 方法 */ object ApplyTest { def main(args: Array[String]): Unit ...
- scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类
一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person ...
- Scala学习笔记(四):apply方法说明
当scala中类或者对象有一个主要用途的时候,apply方法就是一个很好地语法糖.请看下面一个简单的例子: class Foo(foo: String) {} object Foo { def app ...
- scala学习笔记4(apply方法)
class ApplyTest{ def apply() = "This apply is in class" def test{ println("test" ...
- (转)scala apply方法 笔记
在akka源码中有这样一个Cluster类. 使用方法是这样的:val cluster = Cluster(context.system); 作为scala菜鸟的我,并没有找到Cluster(syst ...
- JavaScript学习笔记(1))——————call,apply方法
学习前端也有一段时间了,但是效果甚微.利用时间不够充分,虽然是利用工作之余来学习.但是这不能成为我的借口. 今天学习了(其实看了很多遍)call apply方法. function abc(a,b){ ...
- Scala的Class、Object和Apply()方法
Scala中如果一个Class和一个Object同名,则称Class是Object的伴生类.Scala没有Java的Static修饰符,Object下的成员和方法都是静态的,类似于Java里面加了St ...
- 深入学习JavaScript: apply 方法 详解
我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...
- Scala语言学习笔记——方法、函数及异常
1.Scala 方法及函数区别 ① Scala 有方法与函数,二者在语义上的区别很小.Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量.换句话来说在类中定义的函数即是方法 ② Scal ...
随机推荐
- WorldChat.lua --世界聊天
print(">>Script: Wolrd Chating.") local SAY=" "--普通聊天 --联盟阵营 --部落阵营 local ...
- Android学习七:new Date使用
1.例子 学习时间函数,并实现了简单的多个按钮监听同一个事件的方法 2.代码 代码很简单,也很清晰 package com.example.datetime; import java.text.Sim ...
- Squid
事件:由于我们在运维过程中需要升级或安装新的开源软件或组件时,相关的依赖包或基础包非常非常多. 因安全限制,对于没有访问internet权限的服务器,在执行安装或升级过程中就非常容易出错. 所以我们需 ...
- openssl 心脏滴血
yum -y update openssl openssl verson rpm -q --changelog openssl | grep CVE-
- 复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题)
复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题) 相信绝大多数人都遇到过这样的功能实现,“复制”或者“复制到剪贴板”这样的功能.但是由于各大浏览器的实现方案不一样,导致几 ...
- windows server2012 r2 上 安装 IIS8.5
一时间不知道怎么开头了,直接上图吧! 本人技术不高,正在学习中, 要是有 喜欢 .Net,觉得酷的,欢迎来 QQ群 316497348 交流分享!
- RelativeLayout_布局
RelativeLayout布局 android:layout_marginTop="25dip" //顶部距离 android:gravity="left" ...
- nodejs-express 报错View is not a constructor
可能是express版本问题 view修改为views – app.set('views',__dirname + '/views');
- 在Spring的bean中注入HttpServletRequest解密
我们可以在Spring的bean中轻松的注入HttpServletRequest,使用@Autowired HttpServletRequest request;就可以了. 但是,为什么我们可以直接这 ...
- poj 1003 (nyoj 156) Hangover
点击打开链接 题目大意 就是有很多卡片可以沿着桌边向外放,每次可以伸出1/2,1/3,1/4问最少多少卡片才能让一张完成的卡片悬空,题目输入卡片的宽度,输出卡片个数 #include<stdio ...