标签:eth 正则表达 iterator 打开文件 oid open code 赋值 nil
=begin This is a comment ! =end
gets 完成后自动添加一个换行符,调用方法chomp会删除额外的换行符.如图,若不删除可能会引起错误
name.method! 感叹号的修饰表示调用method修改name自身值
一定不要忘记end !!!
1.if/elsif/else
# then可以省略
if condition then
content
elsif condition then
content
else
content
end
Ruby不关心content是否有空格,不过惯例是2个空格
2.unless/else
如果unless语句是false则执行,否则执行else
unless condition
content
else
content
end
unless 和 if 还可以添加到一条语句后面,表明语句在何种条件下执行
puts "if condition is false" unless condition
puts "if condition is true" if condition
while 运行条件为true
# do可以省略
while condition do
content
end
until 运行条件为false
until condition
content
end
for in
#从1到9
for num in 1...10
puts num
end
#从1到10
for num in 1..10
puts num
end
保存对象的对象,我们称为容器(container)。
迭代器是 Ruby 的一个特色功能。从迭代器的英语拼写也可以知道,迭代器表示的是循环(iterate)的容器(-or)。类似地,运算符(operator)也就是运算(operate)的容器(-or),等等。总之,迭代器就是指用于执行循环处理的方法。
# 10是次数
10.times do
puts ‘hello‘
end
任何对象都可以保存在数组中
# 使用数组
arrayName = [var1, var2, var3]
# 空数组
arrayName = []
# 获取数组大小
arrayName.size
# 遍历所有数组元素
# .each方法会把数组元素逐个取出赋值给|变量|指定的变量
arrayName.each do |变量|
block
end
键(key) : 一般以 符号(symbol) 、字符串、数值作为键
散列的创建
# 使用大括号
song = { :title => "Android", :company => "Google"}
song = { "名字" => "Android", "公司" =>"Google"}
mark = { 11 => "Jack", 12 => "Queen", 13 => "King"}
# 常把符号当做键来使用,简短写法,两者相同
person = { name: "张三", pinyin: "zhangsan"}
person = { :name => "张三", :pinyin => "zhangsan"}
散列的使用
hashName[:keyName]
散列的循环
散列.each do |键变量, 值变量|
block
end
符号也是对象,一般作名称标签用
# 创建对象,标识符前面加上 ‘:’
sym = :foo
sym2 = :"foo"
# 使用符号比字符串更有效率
# 对符号使用to_s方法得到字符串
sym = :foo
sym.to_s
# 对字符串使用to_sym方法得到符号
"foo".to_sym
匹配:判断字符串是否适用于某模式的过程称为匹配
/模式/ =~ 字符串
# 匹配成功则返回匹配位置,索引开始为0
# 匹配失败返回nil
File.open(filename) 表示打开名为 filename 的文件,并返回"读
取该文件所需的对象"。
# 获得文件名
filename = ARGV[0]
# 打开文件,并返回"读取该文件所需的对象"
file = File.open(filename)
# 读取文件内容,输出文本
text = file.read
puts text
#关闭文件
file.close
若只是读取文本内容,直接用read方法更方便
filename = ARGV[0]
text = File.read(filename)
puts text
不使用变量的话,一行搞定
puts File.read(ARGV[0])
each_line 方法就是对文件进行逐行处理
filename = ARGV[0]
file = File.open(filename)
file.each_line do |line|
print line
end
file.close
Regexp.new (str) 表示把字符串 str 转换为正则表达式对象
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
大部分编程语言都提供了把多个不同程序组合为一个程序的功能。像这样,被其他程序引用的程序,我们称为库(library)。
Ruby 使用 require 方法或者 require_relative 方法来引用库。库名可以省略后缀 .rb。
require 方法用于引用已存在的库。只需要指定库名,程序就会在预先定义好的路径下查找并读取与 Ruby 一起安装的库。而 require_relative 方法在查找库时,则是根据执行中的程序目录(文件夹)来进行的,这有利于程序读取写在不同文件的代码。
# grep.rb文件
def simple_grep(pattern, filename)
file = File.open(filename)
file.each_line do |line|
if pattern =~ line
puts line
end
end
file.close
end
# use_grep.rb文件
require_relative "grep"
pattern = Regexp.new(ARGV[0])
filename = ARGV[1]
simple_grep(pattern, filename)
Ruby 提供了很多便利的标准库,在我们的程序需要用到时,都可以使用 require 方法加以引用。
标签:eth 正则表达 iterator 打开文件 oid open code 赋值 nil
原文地址:https://www.cnblogs.com/CodeAndMoe/p/9607516.html