新增 yield_self 来使用当前上下文 yield 代码块。不同于 tap,此方法会返回代码块的运行结果。[功能 #6721&]
🌚 emmm 才知道 tap 居然还可以这么用(
定向思维
🌚 emmm 才知道 tap 居然还可以这么用(
定向思维
> %w[a b c].tap { |s| print(s) }.join &:+ #=> "abc" -> abc
> to_s #=> "main"
> tap { |o| o.to_s } #=> main (toplevel object)
> yield_self { |s| s.to_s } #=> "main" (block yielding result)[38] pry(main)> st = Struct.new(:foo, :bar)
=> #<Class:0x000055dca2b6c630>
[39] pry(main)> st.ancestors
=> [#<Class:0x000055dca2b6c630>, Struct, Enumerable, Object, PP::ObjectMixin, Kernel, BasicObject]
duangsuse::Echo
#Ruby [42] pry(main)> st.superclass => Struct emmm, Singleton class 居然出现在了(非内部)超类链里面....
`[45] pry(main)> Class.new.ancestors
=> [#<Class:0x000055dca3054b70>, Object, PP::ObjectMixin, Kernel, BasicObject]
`
🌑 说好的 singleton class 只是内部概念呢...
=> [#<Class:0x000055dca3054b70>, Object, PP::ObjectMixin, Kernel, BasicObject]
`
🌑 说好的 singleton class 只是内部概念呢...
通过在字节码中移除了全部 trace 指令提升了大约 5-10% 的性能。trace 指令的引入是为了提供 TracePoint 的支持。然而,在大多数情况,TracePoint 不会被用到,trace 指令增加了额外的开销。作为替代,我们实现了一个动态指令技术,详情见 [功能 #14104]。
这是 MRI 2.5 的更新记录,看来 《Ruby Under a Microscope》 里面的 YARY 指令又落后了(跑
删除顶层常量查找。[功能 #11547]🌑 居然有这种操作( 又是居然没想到.... ( 本来通过词法作用域链就可以一直查找到 顶层作用域的...
dse@susepc:~$ pry
[1] pry(main)> Class::Struct
NameError: uninitialized constant Class::Struct
Did you mean? Struct
from (pry):1:in `__pry__'
dse@susepc:~$ ruby2.3
require 'irb'
IRB.start
irb(main):001:0> Class::Struct
(irb):1: warning: toplevel constant Struct referenced by Class::Struct
=> Struct
duangsuse::Echo
删除顶层常量查找。[功能 #11547] 🌑 居然有这种操作( 又是居然没想到.... ( 本来通过词法作用域链就可以一直查找到 顶层作用域的... dse@susepc:~$ pry [1] pry(main)> Class::Struct NameError: uninitialized constant Class::Struct Did you mean? Struct from (pry):1:in `__pry__' dse@susepc:~$ ruby2.3 require 'irb'…
dse@susepc:~$ pry
[1] pry(main)> Object::Class
=> Class
[2] pry(main)> Class.ancestors
=> [Class, Module, Object, PP::ObjectMixin, Kernel, BasicObject]
duangsuse::Echo
删除顶层常量查找。[功能 #11547] 🌑 居然有这种操作( 又是居然没想到.... ( 本来通过词法作用域链就可以一直查找到 顶层作用域的... dse@susepc:~$ pry [1] pry(main)> Class::Struct NameError: uninitialized constant Class::Struct Did you mean? Struct from (pry):1:in `__pry__' dse@susepc:~$ ruby2.3 require 'irb'…
经典的 「Rails 驱动 Ruby 开发」例子 😂
(据说是由于 查找到在顶级作用域定义的类 导致 Rails 的 autoload 出现问题才提交修改)
(据说是由于 查找到在顶级作用域定义的类 导致 Rails 的 autoload 出现问题才提交修改)