zoukankan      html  css  js  c++  java
  • Ruby(1):入门

    安装:

      一般来说linux会自动装ruby,可以通过:
      ruby -v 来查看ruby版本

      直接使用ruby命令的话,是用来执行ruby文件的。如果要打开交互式ruby解释器。只需要在控制台输入:irb 即可。
      irb的命令前面有一个形式如 :irb(main):001:0> 的开始的提示,其中的两个数字第一个表示第几行,第二个表示嵌套的层次。

    语法特点:

      Ruby的设计初衷就是以最面向人的语法习惯来的。所以Ruby代码的规范看起来比其他任何语言都宽松。具体表现如下:

      1. 语句的结尾不需要使用分号结束

      2. 没有任何特殊的缩进要求

      3. 对于只带一个参数的函数,函数的括号可以省略

      4. 一切皆对象。每种对象都有丰富的方法,且可以直接给内置的对象增加方法。

      也正是由于第2点,父层与子层之间没有缩进要求,所以不同于python的是:ruby的语法块之间需要使用end关键字来表示结束。

    简单的使用:

    计算:

      可以使用 1 + 1 、2+2之类的来计算,需要注意的是,如果直接使用 10/3 得到的将是3, 要想得到 3.3333 需要使用 10.0 /3 或者 10/3.0

    循环:

      最简单的循环实现代码如下:

    1 10.times do print " hello" end   #表示循环10次打印 " hello"
    2 # 这里使用了 Fixnum对象的times方法 
    Loop

    定义类:

    1 class Person
    2     attr_accessor :name, :age, :gender       # 定义属性
    3 end    
    DefClass

    定义完类之后,就可以进行实例化了:
    person = Person.new
    person.name = "KiDe"
    person.age = 25
    person.gender = "male"
    ruby当然和其他面向对象的编程语言一样也支持继承,继承的使用通过 < 来实现:

    1 class NewPerson < Person
    2     attr_accessor :health
    3 end
    Heritage

    此时该新的类拥有前面的类的所有属性并且多了一个叫health的属性
    Ruby可以很轻松的对类进行扩展(即使是内置的类):

    1 class Person 
    2     def greeting 
    3         puts "Hello " + self.name
    4     end
    5 end    
    Extend

    PS:在ruby中这不会覆盖原来person的定义,相反只是在原来person的定义之上增加了一个方法,这样Person类和其子类都可以调用该方法。当然如果子类对新增的方法进行复写,那么就形成了多态。

    一切皆是对象:
    可以通过 puts person.class puts 1.class 来查看所有数据类型所属的对象类型

    1 puts 1.class     #Fixnum
    2 puts "a".class  # String
    Class

    Kernel模块的方法:
    Kernel是个特殊的类,他的方法在ruby的每个类和范围中都有效,其中前面用到的 puts 和 print方法都属于该类。
    我们也可以使用 Kernel.puts 来进行输出 ,当ruby发现方法的调用方为空的时候就会去Kernel模块去找。

    向方法中传入参数:
    对于puts这种只有一个参数的方法,可以直接通过 puts "Hello " 将要传入的参数直接放到方法后面,但当方法有多个参数的时候,建议使用括号。

    使用字符串的常见方法:

     1 "test" + "test"         #  testtest
     2 "test".capitalize     #  Test
     3 "Test".downcase  # test
     4 "Test".chop            # Tes    (去掉最后一个字符)
     5 "Test".hash           # -98625764
     6 "Test".next             # Tesu
     7 "Test".reverse       # tseT
     8 "Test".sum            # 416
     9 "Test".swapcase  # tEST
    10 "Test".upcase        # TEST
    String

    所有方法都返回一个新的String对象,所以支持链式调用。

    以非面向对象的方式使用Ruby:
    可以直接在main函数中定义一个新的方法,然后直接调用。这个调用的时候是没有带任何对象的。其实该方法也属于Kernel对象。也可以通过Kernel. 调用:

    1 def myPrint(value)
    2     print "This is myPrint:" + value
    3 end
    4 
    5 # 可以通过下面的方式进行调用:
    6 myPrint("Haha")
    7 Kernel.myPrint("Haha")
    Method

    通过Kernel.methods 可以得到 Kernel的所有方法,里面可以看到有 :myPrint 的签名。

  • 相关阅读:
    Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别
    Atitit 图像处理 halcon类库的使用  范例边缘检测 attilax总结
    互联网创业原则与创业模式attilax大总结
    Atitit SeedFilling种子填充算法attilax总结
    Atitit 软件体系的进化,是否需要一个处理中心
    Atitit 获取剪贴板内容
    Atitit 架构的原则attilax总结
    Atitit Atitit 零食erp数据管理世界著名零食系列数据.docx世界著名零食
    Atitit 个人信息数据文档知识分类
    Atitti python2.7安装 numpy attilax总结
  • 原文地址:https://www.cnblogs.com/Kidezyq/p/5707021.html
Copyright © 2011-2022 走看看