设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2426|回复: 4
打印 上一主题 下一主题

[已经解决] 请问class << AAA 是什么意思?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1388
在线时间
343 小时
注册时间
2016-7-17
帖子
132
跳转到指定楼层
1
发表于 2020-3-22 15:48:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
跟一般的class有啥不同?

Lv5.捕梦者

梦石
0
星屑
36397
在线时间
10791 小时
注册时间
2009-3-15
帖子
4813
2
发表于 2020-3-22 18:33:27 | 只看该作者
本帖最后由 soulsaga 于 2020-3-22 18:58 编辑

哎..网上找不到//
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
419
在线时间
54 小时
注册时间
2019-6-19
帖子
8
3
发表于 2020-3-23 13:58:48 | 只看该作者
<<在ruby中是定义多行字符串,又叫Here document,<<后面紧跟一个保留字或者字符串,然后输入多行字符串,最后以紧跟的那个结尾。
print <<EOF
    这是第一种方式创建here document 。
    多行字符串。
EOF
回复 支持 0 反对 1

使用道具 举报

Lv2.观梦者

梦石
0
星屑
419
在线时间
54 小时
注册时间
2019-6-19
帖子
8
4
发表于 2020-3-23 14:07:11 | 只看该作者

不对,应该是ruby的内部类。
回复 支持 0 反对 1

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

5
发表于 2020-3-23 15:58:52 | 只看该作者
本帖最后由 KB.Driver 于 2020-3-23 16:08 编辑

class << obj
  # code
end

这个是"打开类"操作,"class <<"是打开类操作符
打开类可以为被打开的对象定义单例方法,也可以读取对象内部的变量、常量。
如果不想深究元编程的话,知道这么多就够了。


——分割线——

从不严谨的角度来说,打开类操作和class_eval(module_eval)有点类似
只不过一个是标准语法,一个是接收块作为参数的方法

打开类的本质是进入一个新的作用域,该作用域的self变为被打开对象的单例类
因此在这里定义的方法就会变成对象的单例方法。

打开类的应用场景一般有这几个:
1、类方法或模块方法需要使用环绕别名时,需要打开类后再使用别名
2、为任意对象(类和模块也是对象)定义单例方法(在单例内里使用include就是这样的技巧之一)
3、读取对象内部作用域的变量



评分

参与人数 2+2 收起 理由
b200077 + 1 精品文章
MCCF + 1 认可答案

查看全部评分

用头画头像,用脚写脚本
回复 支持 3 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 11:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表