Ruby-基础语法

来源:互联网 发布:dbc2000怪物数据库 编辑:程序博客网 时间:2024/05/20 05:53

项目中API接口是使用ruby写的,为了适应以后的开发和可能的需要开始接触学习Ruby。

Ruby基础语法:

1、puts,putc , print,
这是几个常见的打印输出的方法

  • puts会打印出带有换行符的内容
  • putc会打印出第一个字符
  • print打印的内容不带换行符

2、注释

# 注释# 这是单行注释# 多行注释=begin 这是多行注释=end# 这是多行注释# 这是多行注释# 这是多行注释

3、判断

input = 2if 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_iif 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 = 0num2 = 2begin  puts("在循环语句中 i = #{num1}" )  num1 +=1end while num1 < num2

相当于其他语言中的do while,至少会执行一次

5、代码块

sum = 0(1..100).each{|i|   sum += i}puts sum  #5050
# 异常处理a = 100while true  puts "请输入分母:"  b = gets.chomp.to_i  break if b == 999  begin    puts a/b  rescue Exception=>e    puts "分母不能为0!"  endend

6、方法def
方式书写形式

def test  puts 'hello test'end

带参数的方法

写法1:def add(a, b)  a+bend写法2:def add1(a, b)  return a+bend写法3:def add2(a=0, b=0)  return a+bend

引申,方法的导入可以使用

require ‘./tools.rb’

7、查看类型对象的类型

#  ===========     查看类型   ==============test = 'abc'puts test.class # 查看test的类型# Stringputs String.class# Class
aNmae = String.new('abc')aNmae += '1234'puts aNmaeputs 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}"  endendstudent = Student.new('zw','10001','男')student.sayHellostudent.name = 'zww'puts Student::Versonputs student.name

9、方法控制

#  ===========     方法控制   ==============class Methods  public  def sayHello    puts 'sayHello'  end  private  def sayHello1    puts 'sayHello'  endendmethod = Methods.newmethod.sayHellomethod.sayHello1 #调用就会报错

10、方法扩充

#  ===========     方法扩充   ==============class Student  attr_accessor :name  def initialize(name,no,gender)    @name = name    @no = no    @gender = gender  endend# 为Student类扩充sayHello方法class Student  def sayHello    puts 'sayHello'  endend# 为String类扩充sayHi方法class String  def sayHi    puts 'I say hi'  endendstudent = Student.new('zw','001','男')puts student.namestudent.sayHellostudent.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)  #endend

调用方式:

#  ===========     Module   ==============require './Mathematics.rb'puts Mathematics::PIputs Mathematics::sqrt(4)puts Mathematics.sqrt(4)# 类方法可以使用点语法也可以使用 :: 进行调用

13、Hash

#  ===========     Hash   ==============hs = {'a'=>'name','b'=>'age'}print hs.to_aputs #换行puts hs['a']a = Hash.newprint 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:00require 'date'puts Date.new# -4712-01-01puts 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.ydayputs Time.now.to_s# 时间格式化puts Time.new.strftime('%Y/%m/%d %H:%M:%S')require 'date'puts Date.todayputs Date.today.yearputs Date.today.monthputs Date.today.dayputs Date.today - 3
1 0