我已经习惯了,当我输入 rake 的时候,我知道需要一些耐心。
最近不断地听说 Crystal,有哪些看点呢?
今天看到一博客演示了一段比较性能的代码显示有三倍的差距。
看了视频片段,也有很大的改进:
引入了类型,可有效减少 bug 吧。
@chenge 估计 ruby 的改进会朝着这个方向走,但是用不用这种方式难说。ruby3.0 开始字符串默认都会成为 immutable,如果再加上可选的类型或者类型推断,不仅仅可以有效减少 bug,还能大幅度提高执行速度。Crystal 需要disallowing certain dynamic aspects of Ruby
,所以即使 rails 能在上面运行,也需要大量修改,估计不太可行。
#2 楼 @rubyu2 个人持不同意见。我是支持左边的写法,论点如下:
sum(x : Int32)
错了,我们只调试这个方法即可,不影响其它方法。之前还在说 Ruby 怎么为 foo(*bar)
定类型呢(详见:https://ruby-china.org/topics/25428#reply4),结果 Crystal 说我们用多态吧,2333。(BTW,Crystal 能不能把模式匹配搞进去啊?)
其实我想听听 @luikore 的深入见解。
#5 楼 @deathking 是好是坏得看使用者... 如果重载的各个函数定义在了不同的地方会不会坑?
class A
def foo x
x
end
end
module B
def foo x, y=nil
y
end
end
class C < A
include B
def foo x
x
end
end
Crystal 应该是限制最宽松的静态语言了... 但要成功,得把 method name resolution 的规则做好,和加上 pattern match