ruby学习笔记

ruby学习

初识类

# @name是实例变量,能够被该类或者子类继承使用
class Player
    def initialize(name = "Koma")
        @name = name
    end
    def show()
        puts "player: #{@name}"
    end
end
koma = Player.new()
koma.show()

curry = Player.new("Curry")
curry.show()

harden = Player.new("Harden")
harden.show()
class Game
    attr_accessor :price, :title #定义可存取对象的属性
    def initialize(title = "怪物猎人世界", price = 200)
        @title = title
        @price = price
    end
    def show()
        puts "标题: #{@title}"
        puts "价格: #{@price}"
    end
end

mygame = Game.new()
mygame.show()

puts "title is " + mygame.respond_to?("title").to_s
puts "price is " + mygame.respond_to?("price").to_s

mygame.title = "Super Mario World"
mygame.price = 150
mygame.show()
class Game
    def initialize(title = "怪物猎人世界", price = 200)
        @title = title
        @price = price
    end
    def show()
        puts "标题: #{@title}"
        puts "价格: #{@price}"
    end
    def show2()
    end
    def show3()
    end
end

puts Game.instance_methods(false) #false打印定义的方法

mario = Game.new("超级马里奥", 350)
if mario.respond_to?("show")
    mario.send("show")
end

循环和join的使用

games = ["绝地逃生", "怪物猎人世界","信长之野望大志"]
puts games

games.each do |game|
    puts "我爱<<#{game}>>"
end

games.each_with_index do |game,i|
    puts "#{i+1}.#{game}"
end

puts games.join(",")

定义使用哈希变量

mvp_rank = {
    "curry" => 28.1,
    "harden" => 30.3,
    "lebron" => 26
}

puts mvp_rank
puts mvp_rank["harden"]

player = {
    name: "harden",
    age: 28,
    point:30.3
}

puts player
puts player[:name] + ", "  + player[:age].to_s + ", " + player[:point].to_s

类1

class Game
    def initialize(id, title, price)
        @id = id
        @title = title
        @price = price
    end

    def showGame
        puts @id + "," + @title + "," + @price.to_s
    end

    def self.toStr #不用实例化就可以使用的方法
        puts "I love this game."
    end
end

zelda = Game.new("zelda", "Harden", 330)
zelda.showGame


Game.toStr
Game::toStr#使用类调用静态方法

关于继承

class Game
    def initialize(id, title, price)
        @id = id
        @title = title
        @price = price
    end

    def showGame
        puts @id + "," + @title + "," + @price.to_s
    end

    def self.toStr #不用实例化就可以使用的方法
        puts "I love this game."
    end
end

class SteamGame < Game
    def SteamInfo
        puts "G胖说了,STEAM要统一各个平台,完成Game All In One."
    end
end
SteamGame.toStr #子类调用静态方法

mygame = SteamGame.new("nobunaga-taishi", "关云长", 110)
mygame.showGame #输出父类方法
mygame.SteamInfo

关于模块

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::Version
puts BaseFunc.showVersion
puts BaseFunc::showVersion
puts BaseFunc.v 

class BaseClass include BaseFunc
end

puts "================================="

puts BaseClass::Version
# puts BaseClass.showVersion 
# puts BaseClass.v  #模块中方法被定义为静态时,类不能直接使用
myCls = BaseClass.new  #实例方法通过类实例后可以使用
puts myCls.add(10,20)  #只要是静态方法、不实例化 类直接引用的方法,那么它是不能够继承模板的

例外处理

begin
    puts ">处理开始"
    10/0
rescue => e
    #错误发生时
    puts "X错误发生!"
    puts e
else
    #正常处理
    puts "O正常处理"  
ensure
    #最后处理,无论是否发生处理(final)
    puts "_最后的扫尾处理"
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑着的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值