zoukankan      html  css  js  c++  java
  • Ruby学习之类2

    1.属性的读写控制

    class Man
    def initialize(name,sex)
    @name = name
    @age = 16
    @sex = sex
    end
    # 只读
    def get_name
    return @name
    end
    # 只写
    def set_age(age)
    @age = age
    end
    # 读写
    def get_sex
    return @sex
    end
    def set_sex(sex)
    @sex = sex
    end
    end
    t = Man.new("Jim","male");
    puts t.get_name
    puts t.get_sex
    t.set_sex("man")
    puts t.get_sex
    t.set_age(22)

    通过方法来实现属性的控制

    2.还有一种简略的写法

    class Man
    def initialize(name,sex)
    @name = name
    @age = 16
    @sex = sex
    end
    # 只读
    def name
    @name
    end
    # 只写
    def age=(age)#这里等号不能有空格
    @age = age
    end
    # 读写
    def sex
    @sex
    end
    def sex=(sex)
    @sex = sex
    end
    end
    t = Man.new("Jim","male")
    puts t.name
    puts t.sex
    t.sex = "man"
    puts t.sex
    t.age = 22
    puts t.age

    结果:
    Jim
    male
    man
    因为age是只写的所以不能读取

    3.垃圾收集
    Ruby实现了自动的内存管理,实现了垃圾收集。
    垃圾收集器使用,有三点需要说明。
    (1)收集无用的对象内存空间,避免内存泄漏和程序因内存不断膨胀而崩溃。
    (2)判断一个对象的内存空间是否能被清空的标准是,该对象不再被程序中任何一个地方所引用。
    (3)垃圾收集器线程定时轮询,在系统的内存过低时会启动释放内存。
    GC类中的start方法来实现垃圾收集功能。

    4.异常处理
    (1)基本结构 Ruby使用begin...rescue...end结构来处理异常。类似于try...catch...finally。
    案例:

    s = 1
    begin
    s = 1/0
    puts s
    rescue
    puts "error!"
    end

    结果:error!因为有错误捕捉到。

    (2)重试语句
    在捕捉到错误之后,可以通过retry语句重新执行begin块中的内容。
    案例:

    s = 1
    begin
    s = 1/0
    puts s
    rescue
    puts "error!"
    retry
    end

    如果有错误,会一直报错下去

    (3)抛出异常
    Ruby中使用raise语句抛出异常,类似于Java中的throw。异常信息可以被全局变量$!获取

    begin
    raise "test"
    rescue
    puts "error!"+$!
    # retry
    end

    结果:
    error!test

    (4)结束清理
    Ruby中使用ensure语句来实现语句块的最后清理。不论语句块中是否出现异常,
    ensure块都将执行。

    s = 1
    begin
    s = 1/0
    rescue
    puts "error!"+$!
    # retry
    ensure 
    puts "finished!"
    end
    puts "------------"
    s = 1
    begin
    s = 1/2
    rescue
    puts "error!"+$!
    # retry
    ensure 
    puts "finished!"
    end

    结果:
    error!divided by 0
    finished!
    -----------
    finished!

    小结:

    Ruby中的类使用跟java大同小异了

  • 相关阅读:
    mysql性能优化学习笔记(1)优化目的、方向及数据库准备
    php笔试算法题:顺时针打印矩阵坐标蛇形算法
    离职了,一切从头开始
    mysql性能优化学习笔记(2)如何发现有问题的sql
    WTL的使用
    获取程序当前目录的绝对路径
    [读书笔记]《C#本质论》读书笔记
    [.NET]ConcurrentDictionary 线程安全的集合类
    RakNet中文手册
    Python SCons
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/2985816.html
Copyright © 2011-2022 走看看