没什么好办法,多写多练,写上 20w 行就差不多了
Rake 作为 Ruby 的头号 Gem, LZ 应该多去了解了解它,Ruby 的 make.
windows 下还是别折腾了
货币型基金,呵呵呵,跑得过定期,风险较小,收益也少,高收益总是伴随着高风险的嘛
我现在使用 mongoid, 曾经用过 DataMapper, Activerecord 其实跟 Rails 差别不大
Sinatra + Mongoid, Bootstrap、jQuery 必须没的说~........... 和我项目用的框架一模一样
#80 楼 @blacktulip 改天再画一张,eigenclass 直接塞到 class 里面去 这张图是当时在 windows 下用 word 画的,真蛋疼
#78 楼 @blacktulip 这确实是这张图的一个大 bug 啊.... 难道真要在每一个 class 上面都画上一个 eigenclass, 然后 eigenclass 的关系用虚线表示,其走向跟实线一样?
#75 楼 @fsword 谢谢你的精彩回复,我刚学 Ruby 的时候就知道你了,taobao 的阿福^_^ 忍不住贴下我自己心中的答案,有什么不对的地方请多多指点。 就说说和 Ruby 基础相关,Rails 的,看过源码加上自己的理解一般都能说上两句...里面涉及的东西太多了。
首先说明一下面试题的背景,项目不用 Rails 而是用 Sinatra, 后期很可能要转为Padrino. 所以对 Ruby 本身的基础知识要求比较严格,很多 gem 包都是直接提供给 Rails 用的,如何把它们拿来用于我们的项目,是一个小小的挑战。
Ruby 基础相关
1. each 与 map 的区别 涉及知识点:Ruby 迭代器的基本知识 为什么要问这个问题,主要是考察 Ruby 迭代器的基本知识点,我看过一些代码,比如下面这个:
def get_all_people_name
arr = []
@peoples.each do |p|
arr << p.name
end
arr
end
# 完全可以用一行代码搞定
@peoples.map &:name
其实我更想问的是,如何用 each
写一个类似 map
的方法
module Kernel
def my_map &block
arr = []
each { |i| arr << block.call(i) }
arr
end
end
2. proc, lambda, 和 Proc 的区别 涉及知识点:Ruby 中的闭包 这个题目几乎要被用滥了,但是为什么还要出这个题目呢? 就是想知道你知不知道闭包这个东西... 认真学过 Ruby 闭包的同学闭着眼都能说出一两句,如果你接触过 Ruby1.8 中的闭包,也会知道 proc(), lambda() 与 Proc.new() 与现在 Ruby 版本之间的不同。
并且,我可以继续和你讨论下有关闭包及相关作用域的问题...
3. alias 的用法,alias 与 alias_method 的区别 涉及知识点:Ruby 中的关键字 - alias, Module 中的方法 - alias_method. 用过 alias 和 alias_method 就可以发现它们之间用法的区别。
然后我会顺便问问你,为什么要写这个 alias...
另外有个隐晦的地方,alias_method 是有返回值的...当然,it is a joke.
static VALUE
rb_mod_alias_method(VALUE mod, VALUE newname, VALUE oldname)
{
rb_alias(mod, rb_to_id(newname), rb_to_id(oldname));
return mod;
}
4. 用过那些 gem, 简单的说一说各自的用途 这个用于聊一聊相关的 gem 及相关项目经验。
5. 画个图,体现一下 Ruby 的对象体系 涉及知识点:Ruby 对象体系 不多说了,直接看代码和图,不了解 Ruby 对象体系,就不会明白这个方法为什么要写在 Object 类里面
class Object
# activesupport/lib/active_support/core_ext/object/try.rb
def try(*a, &b)
if a.empty? && block_given?
yield self
else
__send__(*a, &b)
end
end
end
有守门员就不能进球了啊?!
学 Rails 一定得了解 Ruby
薪酬水平?
只满足第 1 条和第 3 条
写个 shell 就搞定了啊
各种大白腿 哈哈哈
跪了
头悬梁,锥刺股~
@quakewang @wuwx excellent!
@5long 第二种方法很好使啊,谢谢了,我研究一下
@5long 谢谢你的回答
其实就是根据数组中的元素,把它split(".")
成为一个数组之后,如果数组的第一项相同,就把这个元素放到这样一个数组里面["0.0", "0.1", "0.2"]
比如说"0.0", "0.1", "0.2"
分割后第一项都相同,就把它们放在一起
歇几天,然后该干嘛干嘛
mark,挺喜欢的
报名 +1
前段时间刚好用了 rainbows,关注中!谢谢 robbin 的讲解。
@luikore 有空能帮忙看一下吗?