这事反弹还有个因素,就是大家都觉得现在提供的功能不是大家想要的,对此 Matz 的回应非常不友好,等过了好久才有 Rei 贴的那个回复,讲了下 Elixir 风格的管道在 Ruby 上不好实现(其实我没看懂)
对,今年圣诞节是 2.7,3.0 感觉是明年了(其实 16 年提 3x3 这概念的时候 Ruby 3.0 是指今年...)
API 模式是不需要 CSRF Token 的,可以考虑直接关掉。
催更~ 等有空想实现在 https://github.com/jasl/cybros_core 上
朋友,我记你的仇,可能么?
你换个频道还是在杠,已经告诉你了 Sorbet 现在已经开源,Ruby 3 的时候会作为官方标准(给所有标准库加上类型标注)
其次,“静态类型检测”是个什么东西?从来没有这种玩意
Sorbet 开源后,社区贡献的工具链也开始出来了,Rails 那堆动态方法有工具来生成类型标注 https://github.com/chanzuckerberg/sorbet-rails
他解决的不是你提到的场景,所以才被社区反对... 目前解决的问题是 a.b.c
可以写作 a |> b |> c
,除了多行代码排版好看点,还有 Range 这种不用包括号,看不到有什么好处,反而占用了一个宝贵的操作符
概念问 Wiki https://zh.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E9%87%8A%E4%B9%89
实际参考这个项目 https://github.com/mame/ruby-type-profiler
抽象解释(按 Wiki 的翻译法)有他自己的问题,算法复杂度很高,那个项目试验性质多半要坑
这个他们是这么说的,不过跟 Webpacker 项目的目标是不同的
准确的说这是 YARD,RubyMine 默认使用的注释格式
你要想精确的话只能用 BigDecimal
了,next_float
不靠谱
[1] pry(main)> (1.1).next_float
=> 1.1000000000000003
本来正常的数,反而引发了问题
干掉的话一般是round
一下,但又不满足你说的“不能强制精确到小数点后 N 位”
你开心就好
最后,每个人都可以有自己的喜好,包括 Matz 最近搞的管道操作符被社区骂惨了,但是为了反对而找理由就不好了,而且确实你提影响内存占用和性能都站不住脚,反而暴露了你基础知识薄弱。
可能话不好听,你多担待着点。
1 RubyMine 对 Rails 的 model 和 view 做了特别处理,实际上模型的属性是从 SchemaCache 里读的
2 没看懂,也不懂为什么不能标注在行尾
最后再说你的观点,首先,我觉得可以接受,目前我关注社区的讨论没有批评的,这件事从两年前就开始了,Matz 自己做的 Soft type,还有 Sorbet,还有人在做类似 .ts.d
的方案,去年 RubyKaigi 有几场关于类型的分享,目前看 Sorbet 胜出,而且 Sorbet 的作者的背景非常的好,编译器、静态分析方向的博士,师从 Scala 的作者,同时还是 Scala 的(前)重要成员,更关键的是,Sorbet 有一个宣传点就是 Stripe 已经用这个在生产环境上很久了。
其次,为了让 IDE 更智能,并不需要标注类型,其实更多的做法是“抽象执行”,这个技术下是不需要你去标注类型的,算法可以推导,当然也有他的问题了,RubyMine 应该是在用这个技术,同时效果更好的版本 Ruby 也有核心开发在做
另外,你说的 doc,你可能不知道 doc 里做类型标注是基于所有语言的标准做法... Ruby 当然也有啦
# Foo.
#
# @example
#
# y
# g
#
# @param [String] param_name The xx and xx.
#
# @see http://url.com
#
# @return [true] if so
首先,你听说过现代操作系统的 Prefetching
特性么。。。OS 可是为了性能可劲的往内存里塞东西啊。。。
其次,引入模块占用的内存还不够做内存对齐的,这里不占用内存,占用内存的在另一个地方(这个问题可以留给你)但是,他这段实现占用的内存,也是小到完全可以忽略的(KB 级别)
所以你根本没理解我说的,因为答案就是 0。。。这个你不需要理解 Ruby 的实现,只需要了解 Ruby 的语法就足够解答了
另外占用内存空间会影响运行速度,说明你大学的理论课都没学好,这个我真的表示很遗憾。。。
希望你还是要好好学习一个,提高自己的姿势水平,这是坠吼滴
你就不用杠了。。。
这个是不是有运行负担跟我问你的问题“sig
方法的执行时机在哪里?”有关,adam 正是回答了这个问题,虽然讲法不太直接。
其次,刚才说影响运行速度,现在改占内存空间了。。。如果我说占用空间约等于 0 呢?占用命名空间确实是问题,但是首先我没见过有命名模块为 T 的单字符项目,如果你用 IDE,你多半会发现默认的 IDE 的风格规则小于两个字符都会给你 Warning,其次,你告诉我 sig
影响的是实例方法还是类方法?
那你告诉我 sig
方法的执行时机在哪里?
https://github.com/sorbet/sorbet/blob/master/gems/sorbet-runtime/lib/types/sig.rb#L10 说了 "不要以为 extend 了一个 module 就侵入到动态了" 看好这是一个空方法
并不是,好好读读文档吧,Sorbet 是可选的静态检查 + 可选的动态检查,不要以为 extend 了一个 module 就侵入到动态了
用了三年,从未体会过他给我添乱,倒是现在觉得小触摸板(Surface Book 2 说的就是你)都是垃圾
Sorbet 已经搞出来了啊
曾经美餐赞助过一段时间 Swift 社区的 T 沙龙,看办公室全部都是 Embody
不会,爽得一批
我给 hooopo 提议的我们上去说相声的提议被他否决了...
CSV 俩坑,都跟 Win 或者 Excel 有关,一个是 UTF8 with BOM,另一个是 非 UTF8 编码
凉了