• 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大同小异了

  • 相关阅读:
    解决Cell重绘导致 重复的问题
    给Cell间隔颜色
    NSUserDefault 保存自定义对象
    xcode6 下载
    unrecognized selector sent to instance
    16进制颜色转换
    local unversioned, incoming add upon update问题
    应用崩溃邮件通知
    TabBar变透明
    代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/2985816.html
Copyright © 2020-2023  润新知