项目中API接口是使用ruby写的,为了适应以后的开发和可能的需要开始接触学习Ruby。
Ruby基础语法:
1、puts,putc , print,
这是几个常见的打印输出的方法
- puts会打印出带有换行符的内容
- putc会打印出第一个字符
- print打印的内容不带换行符
2、注释
# 注释
# 这是单行注释
# 多行注释
=begin
这是多行注释
=end
# 这是多行注释
# 这是多行注释
# 这是多行注释
3、判断
input = 2
if input <=5 && input>=0
puts '0-5之间'
elsif input <=10 && input>=6
puts '6-10之间'
else
puts '其他范围'
end
input = 2
case input
when 0..5
puts '0-5之间'
when 6..10
puts '6-10之间'
else
puts '其他范围'
end
小 demo:
puts '请输入内容'
input = gets.chomp.to_i
if input == 1
puts '进入这里了'
system "say 妈妈问我怎么不开心"
elsif input == 2
system "say wo hen kai xin"
else
system "say 一毛钱都不给我"
end
如果mac 10.10以上应该会听到系统发声。
4、循环
input = gets.chomp.to_i
while input != 0
puts "进入循环了"
break if input == 2 # 属于后置语法,当input为2时推出
end
input = gets.chomp.to_i
until input != 0 # until与while满足的条件相反
puts "进入循环了"
break if input == 2 # 属于后置语法,当input为2时推出
end
num1 = 0
num2 = 2
begin
puts("在循环语句中 i = #{num1}" )
num1 +=1
end while num1 < num2
相当于其他语言中的do while,至少会执行一次
5、代码块
sum = 0
(1..100).each{|i|
sum += i
}
puts sum #5050
# 异常处理
a = 100
while true
puts "请输入分母:"
b = gets.chomp.to_i
break if b == 999
begin
puts a/b
rescue Exception=>e
puts "分母不能为0!"
end
end
6、方法def
方式书写形式
def test
puts 'hello test'
end
带参数的方法
写法1:
def add(a, b)
a+b
end
写法2:
def add1(a, b)
return a+b
end
写法3:
def add2(a=0, b=0)
return a+b
end
引申,方法的导入可以使用
require ‘./tools.rb’
7、查看类型对象的类型
# =========== 查看类型 ==============
test = 'abc'
puts test.class # 查看test的类型
# String
puts String.class
# Class
aNmae = String.new('abc')
aNmae += '1234'
puts aNmae
puts String(1234)+'abc'
8、class
setter,getter一般通用写法:
#setter
def name=(name)
@name = name
end
#getter
def name
return @name
end
setter,getter ruby写法:
# 使用ruby生成setter和getter
attr_accessor :name #可读可写
attr_reader :no #只读
attr_writer :gender #只写
class Name:
class Student
Verson = '1.0' #类常量
# 初始化
def initialize(name,no,gender)
@name = name #类变量
@no = no
@gender = gender
end
# 使用ruby生成setter和getter
attr_accessor :name #可读可写
attr_reader :no #只读
attr_writer :gender #只写
# #setter
# def name=(name)
# @name = name
# end
#
# #getter
# def name
# return @name
# end
def sayHello
puts "我叫#{@name},学号#{@no},性别#{@gender}"
end
end
student = Student.new('zw','10001','男')
student.sayHello
student.name = 'zww'
puts Student::Verson
puts student.name
9、方法控制
# =========== 方法控制 ==============
class Methods
public
def sayHello
puts 'sayHello'
end
private
def sayHello1
puts 'sayHello'
end
end
method = Methods.new
method.sayHello
method.sayHello1 #调用就会报错
10、方法扩充
# =========== 方法扩充 ==============
class Student
attr_accessor :name
def initialize(name,no,gender)
@name = name
@no = no
@gender = gender
end
end
# 为Student类扩充sayHello方法
class Student
def sayHello
puts 'sayHello'
end
end
# 为String类扩充sayHi方法
class String
def sayHi
puts 'I say hi'
end
end
student = Student.new('zw','001','男')
puts student.name
student.sayHello
student.name.sayHi
11、模块的使用
# =========== Math ==============
puts Math::PI #
puts Math.sqrt(4)
puts Math::sqrt(4)
12、自定义模块
Mathematics模块
module Mathematics
PI = 3.141592653
# 这种方式为类方法方法
def self.sqrt(number)
Math.sqrt(number)
end
# 这种方式为实例方法
#def sqrt(number)
# Math.sqrt(number)
#end
end
调用方式:
# =========== Module ==============
require './Mathematics.rb'
puts Mathematics::PI
puts Mathematics::sqrt(4)
puts Mathematics.sqrt(4)
# 类方法可以使用点语法也可以使用 :: 进行调用
13、Hash
# =========== Hash ==============
hs = {'a'=>'name','b'=>'age'}
print hs.to_a
puts #换行
puts hs['a']
a = Hash.new
print a['a']='b'
14、文件操作
# =========== 文件操作 ==============
# 文件改名
# File.rename('a.txt','b.txt')
# 复制文件
#require 'FileUtils'
#FileUtils.cp('b.txt','b_1.txt')
#删除文件,彻底删除,回收站中没有记录
#File.delete('b_1.txt')
# dir = Dir.open('/Users/zhouwei/Desktop/ZWRubyProduct/BaseRuby')
# while file_name = dir.read
# puts file_name
# end
# 创建文件夹
# Dir.mkdir('tmp')
# Dir.delete('tmp')
15、时间操作
# =========== 时间操作 ==============
# Time:只能使用1970年以后的日期,包括时分秒
# Date:可以使用更以前的日期,但不包括时分秒,需要require "date"
# DateTime:综合了Time和Date,需要require "date"
require 'date'
puts DateTime.new
# -4712-01-01T00:00:00+00:00
require 'date'
puts Date.new
# -4712-01-01
puts Time.new
# 2017-05-14 09:23:13 +0800
# 创建时间
puts Time.new
# 获取当前时间
puts Time.now()
# 获取年,月,日
t = Time.new
# 年
puts t.year
# 月
puts t.month
# 日
puts t.day
#获取在一年中的第几天
puts t.yday
puts Time.now.to_s
# 时间格式化
puts Time.new.strftime('%Y/%m/%d %H:%M:%S')
require 'date'
puts Date.today
puts Date.today.year
puts Date.today.month
puts Date.today.day
puts Date.today - 3