天天看點

Ruby-基礎文法

項目中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 -