天天看点

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 -