开发人员学习ruby需要多长时间.并开发像stackoverflow这样的生产网站?一般.如果开发人员具有.NET经验但没有ruby和MYSQL或PostgreSQL经验.
Mat*_*ggs 15
我在.net工作了大约3 - 4年,和java工作了3年,现在我在铁路商店工作.
学习基本语法很简单.围绕一些概念包围你需要更长的时间.作为一个清单
这是简单的事情.在那之后,你想要学习更多这些东西
很难说这需要多长时间.对我来说,第一部分花了大约一个月玩红宝石和阅读书籍.下半场可能更像是三四个(尽管那里也有铁杆学习)
至于MySQL/pg,它不像你必须从头开始.工具不如SSMS(imo,MS堆栈中最好的部分)那么好,但它足以让你顺利通过.如果使用rails,大部分数据库内容都会被抽象掉.如果你需要检查数据库中的某些内容,那么十分之九会启动一个脚本/控制台并只使用ActiveRecord api(这个世界太惊人了)
编辑:
对象个性化意味着每个对象实例都是它自己的"东西",它基于一个类,但可能不仅仅是那个类.这里有些例子
首先,我们建立一个班级
irb(main):001:0> class TestClass
irb(main):002:1> def tc
irb(main):003:2> puts 'testclass method'
irb(main):004:2> end
irb(main):005:1> end
=> nil
Run Code Online (Sandbox Code Playgroud)
现在我们实例化它两次
irb(main):006:0> t1 = TestClass.new
=> #<TestClass:0x7fea78ee6f78>
irb(main):007:0> t2 = TestClass.new
=> #<TestClass:0x7fea78ed6ba0>
Run Code Online (Sandbox Code Playgroud)
def一个只有的方法 t2
irb(main):008:0> def t2.only_on_t2
irb(main):009:1> puts 'this will not be accessible anywhere else'
irb(main):010:1> end
=> nil
irb(main):011:0> t1.only_on_t2
NoMethodError: undefined method `only_on_t2' for #<TestClass:0x7fea78ee6f78>
from (irb):11
from :0
irb(main):012:0> t2.only_on_t2
this will not be accessible anywhere else
=> nil
Run Code Online (Sandbox Code Playgroud)
重新定义从类中提取的方法,但仅限于 t1
irb(main):013:0> def t1.tc
irb(main):014:1> puts 'redeffing something picked up from the class'
irb(main):015:1> end
=> nil
irb(main):016:0> t1.tc
redeffing something picked up from the class
=> nil
irb(main):017:0> t2.tc
testclass method
=> nil
Run Code Online (Sandbox Code Playgroud)
上面的代码是非常罕见的,因为在另一种方法中有一堆内联方法定义内容通常非常难看.使用特定实例混合模块非常强大,尤其是考虑到鸭子类型时.
irb(main):018:0> module TestModule
irb(main):019:1> def tm
irb(main):020:2> puts 'this is where it gets interesting'
irb(main):021:2> end
irb(main):022:1> end
=> nil
irb(main):023:0> t2.extend TestModule
=> #<TestClass:0x7fea78ed6ba0>
irb(main):024:0> t2.tm
this is where it gets interesting
=> nil
irb(main):025:0> t1.tm
NoMethodError: undefined method `tm' for #<TestClass:0x7fea78ee6f78>
from (irb):25
from :0
irb(main):026:0> t1.is_a? TestModule
=> false
irb(main):027:0> t2.is_a? TestModule
=> true
Run Code Online (Sandbox Code Playgroud)
这是更先进的东西,也是你应该达到的最后一件事,但有些情况下,做一个动态扩展是一个更优雅的解决方案,然后替代品(这是一个替代品)与大多数高级红宝石一样的常见警告,不要这样做,因为你可以,只在你需要的时候这样做)
| 归档时间: |
|
| 查看次数: |
14509 次 |
| 最近记录: |