文档章节

函数式对象之自指向

柳哥
 柳哥
发布于 2014/06/06 15:46
字数 300
阅读 46
收藏 0

关键字this指向当前执行方法被调用的对象实例。或者如果使用在构造器里的话,就是正被构建的对象实例。例如,如果要添加方法lessThan,测试当前有理数是否小于传入的参数,可以这样写:

class Rational(:Int,d:Int) {
    require(d != 0)
    val number:Int = n
    val denom:Int = d
    override def toString = number + "/" + denom
    def add(that:Rational):Rational = {
        new Rational(number * that.denom + that.number * d,d * that.denom)
    }
    def lessThan(that:Rational) = {
        this.number * that.demon < that.number * this.denom        //注意这里
    }
}

这里,this.number指向lessThan被调用的那个对象的分子。你也可以去掉this前缀而只写number,两种写法意义相同。下面是不能省略this的例子,在Rational类里添加max方法返回指定有理数和参数中的较大者:

class Rational(n:Int,d:Int) {
    require(d != 0)    //先决条件
    val number:Int = n
    val denom:Int = d
    override def toString = number + "/" + denom
    def add(that:Rational):Rational = {
        new Rational(number * that.denom + that.number * d,d * that.denom)
    }
    def lessThan(that:Rational) = {
        this.number * that.denom < that.number * this.denom
    }
    def max(that:Rational) = {
        if(this.lessThan(that)) that else this    //注意这里
    }
}

这里,第一个this可写可不写,写成(lessThan(that))也是一样的,但第二个this必须写,表示要返回的对象。

© 著作权归作者所有

共有 人打赏支持
柳哥
粉丝 203
博文 405
码字总数 347782
作品 0
杭州
技术主管
call() bind() apply()

call()和apply() 这两个方法都是函数对象的方法,需要通过函数对象来调用。 当函数调用call()和apply()时,函数都会立即执行。 都可以用来改变函数的this对象的指向。 第一个参数都是this要指...

Halukn
05/24
0
0
关于JavaScript中this的软绑定

首先,什么是软绑定? 所谓软绑定,是和硬绑定相对应的一个词,在详细解释软绑定之前,我们先来看看硬绑定。在JavaScript中,this的绑定是动态的,在函数被调用的时候绑定,它指向什么完全取...

酥风
07/19
0
0
JS函数浅析之constructor、prototype属性

函数是JS里很神奇的一位童鞋。那么如何创建一个函数呢?简单来说有下面几种形式: 1、定义式 function a() {} 2、声明式 var a = function() {}; // 把一个匿名函数赋给一个变量 3、构造函数...

冯尚实
2011/09/07
0
0
关于 this 你想知道的一切都在这里

无论在 的日常使用中还是前端面试过程中, 的出镜率都极高。这无疑说明了, 的重要性。但是 非常灵活,导致很多人觉得 的行为难以理解。本文从为什么要有 作为切入点,总结了 的六大规则,希...

穿越过来的键盘手
07/10
0
0
C++基础知识学习:变量的初始化

C++基本算术类型 类型 含义 最小存储空间 bool 布尔型 - char 字符型 8位 wchar_t 宽字符型 16位 short 短整型 16位 int 整型 16位 long 长整型 32位 float 单精度浮点型 6位有效数字 double...

wqli
2016/05/25
79
0

没有更多内容

加载失败,请刷新页面

加载更多

简单谈一谈压力测试

最近,在做API的压力测试,趟了不少坑,然后呢,简要记录一下。 压测前需要准备的一些事 拿到API文档不要立马上手,先基准测试,就是执行一次接口测试,至少要压这个接口,要先熟悉一下他的参...

浮躁的码农
52分钟前
0
0
PHP 错误调查

一.定义:PHP错误是由PHP无法读懂执行的代码引起的错误。 二:错误日志 error log 1.在php.ini 里设置 log_errors = on, log文件位置 error_log=/tmp/php_errors.log 2.代码里设置ini_set('...

忙碌的小蜜蜂
55分钟前
1
0
knn算法

import numpy as np def CreateDateSet(): group = np.array([[1.0, 2.0], [1.2, 0.1], [0.1, 1.4], [0.3, 3.5]]) labels = ['A','A','B','B'] return group,labels coding:utf-8 from numpy......

南桥北木
55分钟前
1
0
自己手写一个 SpringMVC 框架

前端框架很多,但没有一个框架称霸,后端框架现在Spring已经完成大一统.所以学习Spring是Java程序员的必修课. Spring 框架对于 Java 后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,...

别打我会飞
今天
2
0
01-《Apache Tomcat 9》之文件索引

《Apache Tomcat 9》是《看Apache官方文档学英语》的第一个专栏!让我们一起在看文档的过程中学英语,在学英语的过程中夯实技术! Documentation Index - 文件索引 Introduction - 介绍 This...

飞鱼说编程
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部