01BIM社区

 找回密码
 立即注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: lzp19921225

Ruby新手入门

[复制链接]

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 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
两种写法都不会报错了!
回复 支持 反对

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 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

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

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 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
必须在它限制的方法后面,否则会报错!
回复 支持 反对

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2016-10-17 00:49:12 | 显示全部楼层
然后在介绍一种类方法的声明方式,也就是java里的静态方法

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

end

Test.class_method

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

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2016-10-17 00:52:10 | 显示全部楼层
这里介绍完ruby类的声明方式,看完之后基本上自己可以建立自己的类和实例对象了.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|01BIM社区 - 最专业的BIM技术交流平台 ( 渝ICP备15000873号 )

GMT+8, 2024-4-20 16:59 , Processed in 0.052508 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表