分享

Ruby快速入门

 RealPython 2021-03-14

 Ruby基本概念和使用方法

  1. Ruby是什么?

    Ruby是一个面向对象的脚本语言。

    Ruby中,一切皆对象。比如,数字。

    5.times { print "We *love* Ruby -- it's outrageous!" }

    Ruby需要通过解释器运行,这和python等语言类似。

  2. Ruby能做什么?

    可以做很多事情。

    比如,比较著名的web框架Ruby On Rails,我们正在使用的Fluentd。

  3. 安装Ruby,运行解释器

    1. Linux上可使用系统软件包管理工具或者 rbenv、RVM安装

    2. macOS上可使用 rbenv 或 RVM 安装

    3. Windows上可使用 RubyInstaller 安装

    4. 或者下载源码自行编译安装

        运行解释器

    1. macOS,打开Terminal,输入irb,回车

    2. Linux,打开shell,输入irb,回车

    3. Windows,打开开始菜单 -> Ruby -> Interactive Ruby

      irb(main):001:0>
  4. Hello World

    在ruby解释器中调用 puts 命令:

    irb(main):002:0> puts "Hello World"Hello World=> nil

    就是这么简单!

    其中,末尾的 nil 为 puts 的返回值。

  5. 基本数据类型和变量

    1. 整数

    2. 浮点数

    3. 字符串

    4. 变量

      变量无需提前声明,即写即用。

      var1 = 2020

      可以随时将其他类型的数据赋予变量

      var1 = "Fluentd"

      @开头的变量为类的成员变量

      $开头的变量为全局变量

  6. 运算符

    1. 整数支持加减乘除等各种运算符

    2. 字符串也“重载”了很多常用的运算符

    3. 这些和其他语言都很类似,使用时可随时翻阅手册

  7. 数组

  8. ruby的数组可以包含不同类型的数据

    定义一个数组:

    ary = [1, "two", 3.0]

    通过索引访问数组元素,索引为负数则从末尾倒序访问:

    ary[1] # "two"ary[-1] # 3.0

    通过each方法遍历:

    ary.each do |i| puts iend

    ruby数组定义了很多常用的操作方法,可查阅官方手册

  9. 控制结构

    1. 条件分支

      x=5if x > 2 puts "x 大于 2"elsif x <= 2 and x >= 0 puts "x may be 1"else   puts "hard to guess value of x"end

      注意第二个分支是 elsif

    2. 循环

      while 语句:

      $i = 0$num = 5
      while $i < $num do   puts("i = #$i" ) $i +=1end

      for 语句:

      for i in 0..5   puts("i = #{i}")end
  10. 函数

    通过 def 语句来定义一个函数。

    def func(msg)  puts "Hello #{msg}"end

    #{msg}是在 puts 函数中输出变量 msg 的写法

    调用函数:

    func("World")

    也可以不加括号:

    func "World"
  11. 通过 class 语句来声明一个类

    class ClsA def initialize(msg="World") @msg = msg end def func puts "Hello #{@msg}" endend

    @msg 表明:msg是类 ClsA 的一个成员变量

    实例化类对象,并调用其方法

    c = ClsA.new()c.func()
  12. ruby脚本

  13. 我们看一个比较完整的ruby类。

    #!/usr/bin/env ruby
    class MegaGreeter attr_accessor :names
    # 初始化,相当于构造函数 def initialize(names = "World") @names = names end
    # 方法 def say_hi if @names.nil? puts "..." elsif @names.respond_to?("each") # @names 当前值是否支持迭代 @names.each do |name| puts "Hello #{name}!" end else puts "Hello #{@names}!" end end
    # Say bye to everybody def say_bye if @names.nil? puts "..." elsif @names.respond_to?("join")      # names 当前值是否支持join方法 puts "Goodbye #{@names.join(", ")}. Come back soon!" else puts "Goodbye #{@names}. Come back soon!" end end
    end
    #脚本是独立运行还是被其他模块引用if __FILE__ == $0 mg = MegaGreeter.new mg.say_hi mg.say_bye
      # names 赋值为单个字符串 mg.names = "Zeke" mg.say_hi mg.say_bye
      # names 赋值为一个字符串数组 mg.names = ["Albert", "Brenda", "Charles", "Dave", "Engelbert"] mg.say_hi mg.say_bye
    # names 赋值为 nil mg.names = nil mg.say_hi mg.say_byeend

        将这段代码保存到test.rb,然后在命令行输入 ruby test.rb 即可运行。

Ruby的基本概念就介绍到这里,有了这些你应该可以看懂Fluentd的源码了。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多