赞 | 76 |
VIP | 0 |
好人卡 | 0 |
积分 | 97 |
经验 | 554 |
最后登录 | 2024-11-21 |
在线时间 | 570 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 9682
- 在线时间
- 570 小时
- 注册时间
- 2017-9-28
- 帖子
- 208
|
不要逐字翻译,一个 token(语义元素)要连起来看:
@abc 表示一个名叫 @abc 的实例变量;
@@abc 表示一个名叫 @@abc 的类变量,一般不推荐使用;
$abc 表示一个名叫 $abc 的全局变量;
!e 表示把 e 的真假值取反,或调用 e 的 ! 方法,例如:
- a = true
- p !a #=> false
- def a.!
- 42
- end
- p !a #=> 42
复制代码 e! 是一个整体,表示名叫 e! 的方法,此时叹号或问号只能放在方法名的最后,习惯上来说,带叹号的方法会破坏性地修改上下文或自身,带问号的方法通常是进行一个真假的询问,注意只是习惯上,具体定义还是作者说了算,例如:
- def e!
- 42
- end
- p e! #=> 42
复制代码 单独一个 [] 表示空数组,当它接到 e 后面时,表示调用 e 的 [] 方法,常见的数组和哈希表的“用下标/key访问”本质上都是在调用 [] 方法,例如:
- a = nil
- def a.[](x)
- x
- end
- p a[1] #=> 1
复制代码 类似的,a[x] = y 表示调用 a 的 []= 方法;
单独一个 {} 表示空哈希表(Hash),当它接到方法调用后面时,表示传入一个块(block)参数,例如:
- def f
- yield + 1
- end
- p f { 42 } #=> 43
复制代码 当作为块参数时,do .. end 和 { .. } 除了优先级不同外是等效的;
.(一个点)表示“调用”,它的前面是一个对象,后面是该对象拥有的方法名,例如:
- class A
- def a # 这里,a 是一个方法名
- end
- end
- a = A.new # 调用了 A 这个对象里的 new 这个方法,这个内置方法产生一个 A 的实例
- a.a # 调用了 a 这个对象里的 a 这个方法
复制代码
_(下划线)是一个合法的变量名 |
评分
-
查看全部评分
|