Ruby快速入门
“ Ruby基本概念和使用方法”
Ruby是什么?
Ruby是一个面向对象的脚本语言。
Ruby中,一切皆对象。比如,数字。
5.times { print "We *love* Ruby -- it's outrageous!" }
Ruby需要通过解释器运行,这和python等语言类似。
Ruby能做什么?
可以做很多事情。
比如,比较著名的web框架Ruby On Rails,我们正在使用的Fluentd。
安装Ruby,运行解释器
Linux上可使用系统软件包管理工具或者 rbenv、RVM安装
macOS上可使用 rbenv 或 RVM 安装
Windows上可使用 RubyInstaller 安装
或者下载源码自行编译安装
macOS,打开Terminal,输入irb,回车
Linux,打开shell,输入irb,回车
Windows,打开开始菜单 -> Ruby -> Interactive Ruby
irb(main):001:0>
Hello World
在ruby解释器中调用 puts 命令:
irb(main):002:0> puts "Hello World"
Hello World
=> nil
就是这么简单!
其中,末尾的 nil 为 puts 的返回值。
基本数据类型和变量
整数
浮点数
字符串
变量
变量无需提前声明,即写即用。
var1 = 2020
可以随时将其他类型的数据赋予变量
var1 = "Fluentd"
@开头的变量为类的成员变量
$开头的变量为全局变量
运算符
整数支持加减乘除等各种运算符
字符串也“重载”了很多常用的运算符
这些和其他语言都很类似,使用时可随时翻阅手册
数组
控制结构
条件分支
x=5
if 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
循环
while 语句:
$i = 0
$num = 5
while $i < $num do
puts("i = #$i" )
$i +=1
end
for 语句:
for i in 0..5
puts("i = #{i}")
end
函数
通过 def 语句来定义一个函数。
def func(msg)
puts "Hello #{msg}"
end
#{msg}是在 puts 函数中输出变量 msg 的写法
调用函数:
func("World")
也可以不加括号:
func "World"
类
通过 class 语句来声明一个类
class ClsA
def initialize(msg="World")
@msg = msg
end
def func
puts "Hello #{@msg}"
end
end
@msg 表明:msg是类 ClsA 的一个成员变量
实例化类对象,并调用其方法
c = ClsA.new()
c.func()
ruby脚本
运行解释器
ruby的数组可以包含不同类型的数据
定义一个数组:
ary = [1, "two", 3.0]
通过索引访问数组元素,索引为负数则从末尾倒序访问:
ary[1] # "two"
ary[-1] # 3.0
通过each方法遍历:
ary.each do |i|
puts i
end
ruby数组定义了很多常用的操作方法,可查阅官方手册
我们看一个比较完整的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_bye
end
将这段代码保存到test.rb,然后在命令行输入 ruby test.rb 即可运行。
Ruby的基本概念就介绍到这里,有了这些你应该可以看懂Fluentd的源码了。