• ERB api

    %  enables Ruby code processing for lines beginning with %
    <> omit newline for lines starting with <% and ending in %>
    >  omit newline for lines ending in %>
    -  omit blank lines ending in -%>
    

    rails 早期版本会强调这个写法,不过现在貌似也不怎么写了。

  • 如果用rails 自带的 turbolinks 是需要把 javascript tag 放在 head 里面的,如果不用 turbolinks, 我也喜欢放底部,少套一层 domready 回调。

  • 类似 Java/C# 本身也是需要要查找方法的,他们内部维护着一张保持对象内所有函数指针的 vtable,Ruby 也有一张类似的 method_table,通过 rb_method_entry_make 把方法加入到 method_table,每次调用方法Ruby会通过 class 和 method_id 查找 method_table,返回 rb_method_entry_t,没有就直接抛出异常。这个过程是耗时的,而且无论有没有类型系统。

    你给的代码思路是后面的优化,有点像是内联函数。(既然要调用,那么不如直接把函数内联到调用点)。但是,你并没有考虑到oop和动态语言的特性。按你的例子来看,每个 objects 是有 count 方法,但是oop里面一个方法是可能需要搜索继承链的。况且,ruby 没有编译期...

  • 我想起了这个gem了 contracts.ruby。另外,性能是由语言性质和vm决定的,类型系统能提速很大程度是因为强类型语言一般都是编译型语言造成的错觉。至于类型系统可选,我觉得换个语言可能靠谱点,毕竟不像 ts 之于 js,后端可选择的余地很多。

  • 首先,这样还是无法避免最最常见的类型问题,空指针。第二,缺乏动态性。举个例子,ruby 里面, file, io, stringio 都有个close方法,函数需要针对多个类型调用close,这个时候没有 duck typing 或者结构化类型,就会显得非常的繁琐。

  • 偶尔犯二无所谓,卡了一下午可能有点问题了。不过也有可能是他只用过mongodb

  • 但是也及其复杂,Scala 那套类型系统算是非常强大了,也非常成功地把他推上太阳系第一复杂语言的宝座。

  • 其实Javascript 也是通过原型链搜索方法,也是弱类型语言,但运行效率并不差。而关于类型检查的问题,目前 Ruby 的做法是用单元测试,Ruby 是解释型语言不能像 Erlang 一样用 spec 在编译期间检查,但 3.0 可能会参考 go interface 那套。 最后你提到的 C# 的var 能在声明时进行类型推导,但这个除了能少写一个单词真不算优点。

  • Ruby China 正在衰退吗? at 2017年3月12日

    隔壁cnode的热度也在降,首页底部回复都是两天前。所以说人到底去哪了😂

  • 以前emacs 有个插件,只要少个 end满屏幕血红色。不知道别的编辑器有没有。😂

请认准唯一指定邮箱:aiasfina@hotmail.com