lzp19921225 发表于 2016-10-17 00:33:32

这一章介绍,ruby类的各种简化写法.
在java为成员变量添加set/get方法有快捷键,在ruby有属性存储器,例:

class Test
       
        attr_accessor :name,:age #可读,可写

        attr_reader :phone #只可读,不可写

        attr_writer :id #只可写,不可读

end

test = Test.new
test.name = "Ruby"
test.age = 18

puts "我的名字叫:#{@test.name},今年#{@test.age}岁."

相当于一个set/get的简化.

class Test

        attr_accessor :name,:age
       
        def initialize name,age
                @name = name
                @age = age
        end

end

当这样定义ruby类的时候,你想要声明实例对象必须给定初始化值,例如:
test1 = Test.new("Ruby",18)
否者,
test2 = Test.new #报错
这就类似于Java类的只有 有参构造函数 ,没有定义 无参构造函数 一样.
在ruby中有简化办法,如下:

class Test

        attr_accessor :name,:age
       
        def initialize name = nil, age = nil
                @name = name
                @age = age
        end

end

这样
test1 = Test.new("Ruby",18)
test2 = Test.new
两种写法都不会报错了!

lzp19921225 发表于 2016-10-17 00:41:47

下面讲ruby类的方法的私有化,保护方法,公有方法.
声明方式两种,第一种:

class Test
       
        private #以下方法全部私有化
        def def1
                puts "def1"
        end       
        ...
       
        protected #以下方法全部受保护
        def def2
                puts "def2"
        end       
        ...
       
        public #以下方法全部公有化
        def def3
                puts "def3"
        end       
        ...

end

这种声明方式是模块化的,在没遇到下一个关键字之前,全部方法的作用范围全部
由最上面第一个关键字决定.

lzp19921225 发表于 2016-10-17 00:45:37

第二种声明方式:

class Test
       
        def def1
                puts "def1"
        end       
        ...
       
        def def2
                puts "def2"
        end       
        ...
       
        def def3
                puts "def3"
        end       
        ...

        private :def1 #私有化

        protected :def2 #受保护

        public :def3 #公有化

end

这种声明方式是类似之前的属性存储器,但是需要注意的是,关键字 private/protected/public
必须在它限制的方法后面,否则会报错!

lzp19921225 发表于 2016-10-17 00:49:12

然后在介绍一种类方法的声明方式,也就是java里的静态方法

class Test
       
        def self.class_method
                puts "自定义类方法."
        end

end

Test.class_method

在这里只介绍一种ruby类的类方法声明方式,感兴趣的还可以自己扩展
其他2种方式.

lzp19921225 发表于 2016-10-17 00:52:10

这里介绍完ruby类的声明方式,看完之后基本上自己可以建立自己的类和实例对象了.
页: 1 [2]
查看完整版本: Ruby新手入门