【Ruby】ruby快速入门

快速入门之基础语法

只有干货,没有废话,跟着我打一遍,包会!!

  1. 注释:
=begin
多行备注
=end
  1. 声明方法:
def 方法名
end
  1. 声明数组以及循环数组:
def foreach
    games = ["1","2","3","4"]
    
    # 循环方法1
    games.each do |game|
        puts "each循环:#{
      
      game}"
    end
    # 循环方法2
    games.each_with_index do |game,i|
        puts "each_with_index循环:#{
      
      game},下标:#{
      
      i}"
    end


    # 数组连接
    puts games.join(",")

end
# 调用
foreach()
  1. 也运算:
def ye
    a = "aaa"
    b = "bbb"
    c = a++b
    # 字符串循环
    puts a*4
end
ye()
  1. 方法传参数
def name(name="zhangsan")
 puts "name=#{
      
      name}"
end
name('wangwu')
  1. 对象基本使用方法
class Player
    # attr_accessor相当于声明get、set方法(attr_reader,attr_write)
    attr_accessor :name 
    def initialize(name="kafka",price=200)
        # @name 相当于实体变量 声明在attr_accessor :name 
        @name = name
    end
    def show()
        puts "#{
      
      @name}"
    end
    def show1()
    end
end
# 对象1
kafka1 = Player.new("kurry");
kafka1.show()

# 对象2
kafka2 = Player.new("hadeng");
kafka2.show()

# 对象3
kafka3 = Player.new("zhanmusi");
kafka3.show()

# 类中的方法:
# instance_methods:打印出类中的所有函数名称(false:只输出自己写的方法  true:所有的构造方法)
puts Player.instance_methods(false)

kafka = Player.new();

# respond_to:判断是否有show方法   send:执行此方法
if kafka.respond_to?("show")
    kafka.send("show")
end

# 判断对象是否可用  .to_s转化stirng
puts "是否可用:"+kafka.respond_to?("name").to_s
puts "是否可用:"+kafka.respond_to?("price").to_s
# kafka.price  = 22 此行报错
kafka.name = "修改为name"
kafka.show()
  1. 类 静态与继承
# 使用self声明静态方法
class Game
    def initialize(id,title,price)
        @id = id
        @title = title
        @price = price
    end

    def showGame
        puts @id + " " + @title + " " +@price.to_s
    end
    
     # 静态方法 self声明
    def self.toStr
        puts "这是toString方法"
    end
end

# tkdz = Game.new('11','坦克大战',350)
# tkdz.showGame
# # 静态调用的两种方法
# Game.toStr
# Game::toStr

# 类的继承
class SteamGame < Game
    def self.SteamInfo 
        puts '这是继承的类'
    end
end
SteamGame.toStr
SteamGame.SteamInfo
sl = SteamGame.new('11','saolei',350)
sl.showGame
  1. hashmap
def hashmap
   # 原生map
   mvp={
    
    
    "curry"=>28.1,
    "harden"=>30.3,
    "lebor"=>26
   }
   puts mvp
   puts mvp["curry"]

   # json格式的map ==》mvp_json[:name]取得参数值
   mvp_json= {
    
    
    name:"zhangsan",
    age:20,
    point:10
   }
   puts mvp_json
   puts mvp_json[:name]+" "+mvp_json[:age].to_s+"  "+mvp_json[:point].to_s
   
end

hashmap
  1. each 循环
lists = ['1','2','3','4']

# each 指定循环数组的元素
# times 循环次数
# step 循环节

# each循环
puts "1、========================"
lists.each do |list|
    puts list
end

puts "2、========================"
lists.each_with_index do |list,i|
    puts "条目:"+list+" index:"+i.to_s
end

# times 循环
puts "3、========================"
5.times do |i|
    puts "第#{
      
      i+1}次循环"
end

# step 循环  从1开始到10  每次+3
puts "4、========================" 
1.step(10,3) do |i|
    puts  "第#{
      
      i}次循环"
end

# upto 循环1-6
puts "5、========================"
1.upto(6) do |i|
    puts  "第#{
      
      i}次循环"
end

# downto 循环6-1 倒叙
puts "5、========================"
6.downto(1) do |i|
    puts  "第#{
      
      i}次循环"
end

  1. for…while 循环
lists = ['a','b','c','d']
# 循环数组
for list in lists do
    puts list
end
puts "=================="

# 循环10-15
for num in 10..15 do
    puts num
end
puts "=================="

# 循环10-14
for num in 10...15 do
    puts num 
end
puts "=================="

# while 循环
index = 0
while index<5 do
    puts "index="+index.to_s
    index+=1
end
  1. if…else 条件语句
i = 1
# if elsif
if i>0
    puts 10
elsif i<2
    puts 20
else
    puts 0
end

# unless=只要不 
unless i<0
    puts "这是假条件"
else 
    puts "这是真条件"
end

# case when 
case i
    when 0,1
        puts '变量是0或1'
    when 2
        puts '2'
    else 
        puts '其他'
end
  1. 字符串转化
# 字符串
def parse
    a1 = "50"
    a2 = "40"
    a3 = "55"

    puts a1+ a2+a3
    puts "整形转化"+a1.to_i+a2.to_i+a3.to_i
    puts "总分" + (a1.to_i+a2.to_i+a3.to_i).to_s
    puts "浮点转化"+a1.to_f
end

parse
  1. module 使用
# module 没有实例
module BaseFunc
    Version = "0.0.1"

    def v
        return Version
    end

    def add(a,b)
        return a+b
    end

    def self.showVersion
        return Version
    end

    # 将v定义为静态方法
    module_function:v
end

puts BaseFunc.v
# puts BaseFunc.add(1,2)
puts BaseFunc.showVersion
puts BaseFunc::Version


# include 引入BaseFunc所有功能
class BaseClass include BaseFunc
    Version = "0.0.2"
end
# BaseClass::Version

bc = BaseClass.new
puts bc.add(1,2)
  1. 单、双引号的使用
def yinhao(name="zhangsan")
    # 单引号内直接输出之间的内容
    a = '姓名:\n#{
      
      name}' 
    # 双引号会运算之间的运算符
    b = "姓名:\n#{
      
      name}"
    puts a
    puts b
end
yinhao
  1. 错误抓取 try…catch
begin
    # 发生error 
    puts ">错误开始"
    10/0
rescue => e
    # 捕捉异常
    puts "X错误发生"
    puts e
else
    # 正常处理
    puts "O正常处理"
ensure
    # 相当于finally
    puts "finally"
end

猜你喜欢

转载自blog.csdn.net/m0_46537958/article/details/107339697