快速入门之基础语法
只有干货,没有废话,跟着我打一遍,包会!!
- 注释:
=begin
多行备注
=end
- 声明方法:
def 方法名
end
- 声明数组以及循环数组:
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()
- 也运算:
def ye
a = "aaa"
b = "bbb"
c = a++b
# 字符串循环
puts a*4
end
ye()
- 方法传参数
def name(name="zhangsan")
puts "name=#{
name}"
end
name('wangwu')
- 对象基本使用方法
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()
- 类 静态与继承
# 使用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
- 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
- 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
- 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
- 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
- 字符串转化
# 字符串
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
- 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)
- 单、双引号的使用
def yinhao(name="zhangsan")
# 单引号内直接输出之间的内容
a = '姓名:\n#{
name}'
# 双引号会运算之间的运算符
b = "姓名:\n#{
name}"
puts a
puts b
end
yinhao
- 错误抓取 try…catch
begin
# 发生error
puts ">错误开始"
10/0
rescue => e
# 捕捉异常
puts "X错误发生"
puts e
else
# 正常处理
puts "O正常处理"
ensure
# 相当于finally
puts "finally"
end