項目中API接口是使用ruby寫的,為了适應以後的開發和可能的需要開始接觸學習Ruby。
Ruby基礎文法:
1、puts,putc , print,
這是幾個常見的列印輸出的方法
- puts會列印出帶有換行符的内容
- putc會列印出第一個字元
- print列印的内容不帶換行符
2、注釋
# 注釋
# 這是單行注釋
# 多行注釋
=begin
這是多行注釋
=end
# 這是多行注釋
# 這是多行注釋
# 這是多行注釋
3、判斷
input =
if input <= && input>=
puts '0-5之間'
elsif input <= && input>=
puts '6-10之間'
else
puts '其他範圍'
end
input =
case input
when ..
puts '0-5之間'
when ..
puts '6-10之間'
else
puts '其他範圍'
end
小 demo:
puts '請輸入内容'
input = gets.chomp.to_i
if input ==
puts '進入這裡了'
system "say 媽媽問我怎麼不開心"
elsif input ==
system "say wo hen kai xin"
else
system "say 一毛錢都不給我"
end
如果mac 10.10以上應該會聽到系統發聲。
4、循環
input = gets.chomp.to_i
while input !=
puts "進入循環了"
break if input == # 屬于後置文法,當input為2時推出
end
input = gets.chomp.to_i
until input != # until與while滿足的條件相反
puts "進入循環了"
break if input == # 屬于後置文法,當input為2時推出
end
num1 =
num2 =
begin
puts("在循環語句中 i = #{num1}" )
num1 +=
end while num1 < num2
相當于其他語言中的do while,至少會執行一次
5、代碼塊
sum =
().each{|i|
sum += i
}
puts sum #5050
# 異常處理
a =
while true
puts "請輸入分母:"
b = gets.chomp.to_i
break if b ==
begin
puts a/b
rescue Exception=>e
puts "分母不能為0!"
end
end
6、方法def
方式書寫形式
def test
puts 'hello test'
end
帶參數的方法
寫法:
def add(a, b)
a+b
end
寫法:
def add1(a, b)
return a+b
end
寫法:
def add2(a=, b=)
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()+'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()
puts Math::sqrt()
12、自定義子產品
Mathematics子產品
module Mathematics
PI =
# 這種方式為類方法方法
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()
puts Mathematics.sqrt()
# 類方法可以使用點文法也可以使用 :: 進行調用
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 -