1
传统的方式是 def foo(arg1, args2, options = {})
,这样你可以这样用 foo 1, 2, bar: 'baz', baz: 321
,这也是 Rails 的各种 API 的设计方式。
第二种方法是双打散(double splat)操作符, def foo(arg1, args2, **options)
这样既可,这个是 Ruby 2.0 后的东西,用法同上,所以很多库的设计没有跟进,另外整个形参列表都不定的话用打散就可以了 def foo(*args)
。
第三种方法是用 Ruby 2.0 的 keyword arguments,如果你想显式声明可选参数的话 def foo(arg1, arg2, bar: nil, baz: nil)
想可选的话,给个默认值就 ok 了
2 你可以用 1 的方法,让形参接受 proc 来实现,Ruby 的 block 每个方法,限定只有一个
另外说白了,你能做什么,做过什么,做得有多好,除了你自己,别人根本不会关心,这里不是面试。
搞一个 AR、Rails 出来,很多人都可以,有一个系列的课程就是教如何去设计一个 Rails 出来(Rebuiding Rails),你在另外一个帖子介绍 Autumn,这个论坛很多人都玩过类似的了,包括你的那个想法,好几年前就有人做过了,你可以搜一下。
Ruby 的社区文化是 语言(或者语言的库)的设计者、语言(或者语言的库)的实现者还有语言(或者语言的库)的使用者三者分离,DHH 的最大功绩是发明了 Rails 的体系结构还有核心的 API,说白了就是 DHH 告诉大家要有什么,应该长什么样子,其他人跟上完善,Ruby 语言也是这样,其实你读过早年 Ruby 的实现就知道 Matz 的编程水平并不高明,但是有高手的加入,MRI 在 benchmark 上,已经超越了 py
另外 ActiveRecord 的模型做的事情其实很多的,毕竟 AR 源码剃掉所有跟数据库的部分还有将近 3000 行(当然也去掉注释和空行啦),这可是 Ruby 的 3000 行啊,这部分我就可以写出跟这篇文章长度相近的文章来,不过精力有限,这一节被我删去了
这里的问题不是做得出来的问题,而是仅用 20 行左右实现行为和 ActiveRecord 模型一致的动态表单模型(是 FormCore 的内部实现核心二十行不到),另外已经完成了,没完成的是文档、测试(让人相信可以大胆用的东西)
太遗憾了
其实这东西适用场景挺多的,可以把组合模式透明化啊,不过把方法代理到另一个 AR 实体确实有坑... 而且 AR 没办法自动 eager loading
@bhuztez 大会报销讲师的路费、安排酒店的住宿和餐饮,不解决安保问题...
你见过 B 大本尊吗?
海外海皇冠大酒店,当讲师管住的,放心
那可说好咯,自从你在知乎被塞抹布后就看不到你出来吐槽了,RubyChina 的 Erlang 版欢迎来耍!
这个确实,不过问题在于限制 delegate_missing_to
的使用,其实主贴说的有点不太对,看指出的源码,这里的实现只是一个增强版的 delegate
而已,而 delegate
也有滥用会无意识增加额外查询的问题
比如?还是你再说如果不清楚实现细节会有无谓的查询?
我之前在做扩展字段(基于serialize
字段),如果要做到透明就是自己实现了这个功能
东仙队长就是楼猪啦
其实还是小众问题,重启即可解决
在 rubymine 的设置里 有个选择 ruby sdk 的 选和你 rvm 的一致就可以了
过一两周~
cc @Vdan
看了数据,你没投啊,不要怂,骚年!
对了 我可以赞助点 JB 的 yo♂yo♂球
报名!
对了,可以做高铁到杭州东,会场里杭州东站 3.5 公里距离
不改啦,明早就过去签了
如果我没提可以做审稿人这个选项多半就上台了...
无意的,这个时间其实四月就基本定了,然后 拖延症...
@hooopo 有人点你了!不来一个吗!
推荐看《编码:藏匿在计算机背后的语言》
不管在哪学,谁教,都是靠自己... 你也不要被这波节奏带跑了...
快啦,反正老样子,不开发票的话就给自己掏个酒店的午饭钱... 明早去杭州签场地