学习ruby需要多长时间才能学习ruby?

前端之家收集整理的这篇文章主要介绍了学习ruby需要多长时间才能学习ruby?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
开发人员学习 ruby需要多长时间.并开发像stackoverflow这样的生产网站?一般.
如果开发人员具有.NET经验但没有ruby和MysqL或Postgresql经验.

解决方法

我在.net工作了大约3 – 4年,和 java工作了3年,现在我在铁路商店工作.

学习基本语法很简单.围绕一些概念包围你需要更长的时间.作为一个清单

>实例变量如何工作和设置(与c#非常不同)
>与方法相关的所有内容如何只是消息传递的糖
>在代码的任何给定部分,自我意味着什么(尤其是类声明范围和方法声明范围中的自我)
> mixins
>何时使用模块,何时使用类
>类如何只是一种不同的对象

这是简单的事情.在那之后,你想要学习更多这些东西

>了解更常用的语言级回调(如method_missing和included)
>围绕定义方法方法
>理解块,协同程序,过程以及它们如何一起工作(这可能是第一)
>了解方法解析如何工作,并选择适当数量的()或{},这将导致最少的输入
>将头部包裹在个性化的物体周围(这需要一段时间)
>停止使用所有物品,并在适当的地方坚持使用哈希
>学习元编程是否合适,何时不适合(很多很多rubyists都不熟悉)
>学习如何以更好的方式解决这些新工具的常见问题然后可以使用像C#这样的东西(构建器,适配器和策略在我看来是GoF模式中最根本的不同)

很难说这需要多长时间.对我来说,第一部分花了大约一个月玩ruby和阅读书籍.下半场可能更像是三四个(尽管那里也有铁杆学习)

至于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

现在我们实例化它两次

irb(main):006:0> t1 = TestClass.new
=> #<TestClass:0x7fea78ee6f78>
irb(main):007:0> t2 = TestClass.new
=> #<TestClass:0x7fea78ed6ba0>

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

重新定义从类中提取方法,但仅限于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

上面的代码是非常罕见的,因为在另一种方法中有一堆内联方法定义内容通常非常难看.使用特定实例混合模块非常强大,尤其是考虑到鸭子类型时.

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

这是更先进的东西,也是你应该达到的最后一件事,但有些情况下,做一个动态扩展是一个更优雅的解决方案,然后替代品(这是一个替代品)与大多数高级ruby一样的常见警告,不要这样做,因为你可以,只在你需要的时候这样做)

猜你在找的Ruby相关文章