Ruby Cheat Sheet 1 -- 初体验

Ruby 语言有不少特色和标签:面向对象、脚本语言、跨平台、开源,最吸引个人是 Ruby 认为其自身是一种旨在使你们编程时能乐在其中的编程语言,正是所谓的「快乐编程」。由于兴趣缘由接触了一下 Ruby 这门语言,但因为目前我来讲并不会常常使用 Ruby,因此在这边作一个 Cheat Sheet 的存档,方便以后随时查阅。编程

如下内容应多源于《Ruby 基础教程》一书,算是该书的读书笔记。书是二手买来的,可是新的很,发现果真仍是纸质书有质感一些吧🤔。数组

Ruby 初体验

「1」Ruby 初探

可使用两种方法来执行 Ruby 命令:ruby

# 执行 Ruby 文件
> ruby helloruby.rb

# 使用 irb(更适合简单的小测试)
> irb
复制代码

\ 是转译符,程序会对字符串中 \ 后面的字符作特殊处理,在 '' 中则不会转译:markdown

print("Hello,\nRuby\n!\n")
# Hello,
# Ruby
# !
# => nil

print("Hello \\ Ruby!")
# Hello \ Ruby! => nil

print('Hello,\nRuby\n!\n')
# Hello,\nRuby\n!\n => nil
复制代码

'' 中想嵌入 \'' 的话是例外,仍须要在以前加上 \编程语言

Ruby 中有许多输出的方法:测试

print "100"  #=> 100
put   "100"  #=> 100\n
p     "100"  #=> "100"
复制代码

在使用 p 方法时,不会转译字符串中的内容。原则上 p 方法是给编程者使用的。ui

另还有 pp 方法,如其名 pretty print,能够将带嵌套的信息更易懂地打印出来。spa

如何打印一个变量:code

print "表面积 = ", area, "\n"
# or
puts "表面积 = #{area}"
复制代码

Ruby 中的注释和多行注释:orm

=begin 多行注释 2021年02月18日建立 =end
# 单行注释
复制代码

简单的条件与循环语句:

# if
a = 20
if a >= 10 then  # then 能够省略
  print "greater\n"
else
  print "smaller\n"
end

# while
i = 1
while 1 <= 10 do  # do 能够省略
  puts i
  i = i + 1
end
  
# times
100.times do
  puts "Hello, Ruby!"
end
复制代码

「2」便利的对象

数组的简单使用:

name = ["M", "i", "m", "0", "s", "a"]
name[1]  #=> "i"
name[3] = "o"
name[7] = "?"
puts name
# ["M", "i", "m", "o", "s", "a", nil, "?"]
name.each do |char|
  puts char
end
复制代码

符号 symbol 是什么:

符号 symbol 与字符串很像,通常做为名称标签使用,好比做为散列的键,能够将符号简单理解为轻量级的字符串,其与字符串之间也能够相互转换。

散列的简单使用:

person = {name: "Mim0sa", nickName: "Mimoku"}
person = {:name=>"Mim0sa", :nickName=>"Mimoku"}
person[:nickName] = "Mim0ku"
person.each do |key, value|
  puts "#{key}: #{value}"
end
复制代码

模式匹配的简单使用:

/Ruby/  # is a pattern
/Ruby/ =~ "Hi Ruby"  #=> 3
/Ruby/ =~ "Diamond"  #=> nil
/Ruby/ =~ "HI RUBY"  #=> nil
/Ruby/i =~ "HIRUBY"  #=> 2
复制代码

「3」建立命令

怎么输入数据:

puts "第1个参数: #{ARGV[0]}"
puts "第2个参数: #{ARGV[1]}"
puts "第3个参数: #{ARGV[2]}"
> ruby RubyDemo.rb 1 2 3
# 第1个参数: x
# 第2个参数: y
# 第3个参数: z
复制代码

怎么读取文件:

filename = ARGV[0]
file = File.open(filename)
text = file.read
print text
file.close
# or
print File.read(ARGV[0])
复制代码

使用模式匹配逐行匹配内容并输出:

pattern = Regexp.new(ARGV[0])
filename = ARGV[1]

file = File.open(filename)
file.each_line do |line|
  if pattern =~ line
    print line
  end
end
file.close
复制代码

定义一个方法以及从其余文件引用:

# hello.rb
def hello
  puts "Hello, Ruby!"
end

# use_hello.rb
require_relative "hello"

hello()
复制代码