2019-12-30 Ruby初窥

参考:Ruby官网快速入门

特点:动态 开源 甜味十足的语法糖 易读 优雅简洁

         但运行速度也许不够快 没有分号结尾(万岁)

ruby-Hello World:

ruby的'hello world': puts 'hello world'  

ruby的每个语句都有返回值 比如上面的puts会返回nil---rubyabsolutely-positively-nothing

ruby以module组织形成代码库,ruby已经初始内置了许多module 比如  Math


演示1

ruby-函数:

    语法:def   <函数名>[(参数)]

                        body

                end

    例子

演示2

  以 def ~ end语法 与 lisp的括号 ,python的缩进,c的{}相比初体验还阔以。

带参数的函数:


演示3

类似于php,perl有字符串插值,使用#{你要插入的字符串的变量名}

函数如何调用:

                1.函数名(args)

                2.函数名 空格 args


ruby-类:

类似于def ~ end创建函数 使用class ~ end 创建类

Notes:类名一个首字母大写(必须)


演示4

例子:

        类的创建:


演示5

       initialize函数显然就是构造函数,初始化函数 @name是实例变量 而以@@打头的是累变量


    类的实例化:


演示6

错误:注意使用@name 而不是 name (动态语言的的缺点显示出来了,不能静态检查)

修改后类的创建:


演示7

            类的实例化


演示8

            使用classname.new来创建实例,而不是像python使用classname()创建实例

            实例化的对象使用:

            与python,java等相似使用实力实例名.函数名来调用方法,但是不同的是对实例的变量访问。

            上例中对这个Greet类的实例greet_to_dog,会很自然使用greet_to_dog.name或者greet_to_dog.@name来访问

            但是显然ruby中的对象并不喜欢随意向外暴露它的数据。


演示9

            如果需要你要自己定义队变量的set和read方法,当然  

            ruby中有更好的语法糖,使用attr_accessor :name来简化,这会自动加上name和name=这2个方法。如下图


演示10

         上面这个例子还展现了ruby的另一个特性:

                自由的修改类,新修改的类会对已经生成和以后生成的实例对象即可生效

更复杂的例子:

        

承上启下

        运行结果:


    这个新的Greet的say_hi和say_bye函数能处理names是nil或者是数组或者是字符串3 种情况,

    显然ruby中返回bool值函数名统一使用?结尾

    上例中,respond_to? 就是检测变量names是否含有each或者join方法,而nil?的意思显而易见

    ruby中的迭代:

    

    each接受一个代码块,并且对每个要迭代的元素都执行这个代码块一次,通过|name|向这个代码块传递这个迭代元素

    代码块就相当

    

    作为脚本语言,if __FILE__ == $0显然类似python中的if __name__ ==" __mian__"

    其作用是:__FILE__ 是一个魔法值,它存有现在运行的脚本文件的名字。$0 是启动脚本的名字。 代码里的比较结构的意思是 “如果这是启动脚本的话…” 这允许代码作为库调用的时候不运行启动代码, 而在作为执行脚本的时候调用启动代码


像很多动态解释型语言 ruby也有repl交互式命令行irb

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容