请选择 进入手机版 | 继续访问电脑版

01BIM社区

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1701|回复: 14

Ruby新手入门

[复制链接]

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2015-7-3 17:28:04 | 显示全部楼层 |阅读模式
本帖尽量少说废话多举例,让你在操作中去体会ruby这门脚本语言。
回复

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2015-7-4 09:35:21 | 显示全部楼层
Ruby 位运算符
运算符描述实例
&如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。(a & b) 将得到 12,即为 0000 1100
|如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。(a | b) 将得到 61,即为 0011 1101
^如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。(a ^ b) 将得到 49,即为 0011 0001
~二进制补码运算符是一元运算符,具有"翻转"位效果。(~a ) 将得到 -61,即为 1100 0011,2 的补码形式,带符号的二进制数。
<<二进制左移运算符。左操作数的值向左移动右操作数指定的位数。a << 2 将得到 240,即为 1111 0000
>>二进制右移运算符。左操作数的值向右移动右操作数指定的位数。a >> 2 将得到 15,即为 0000 1111


回复 支持 1 反对 0

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2015-7-3 20:05:09 | 显示全部楼层
Ruby 算术运算符
假设变量 a 的值为 10,变量 b 的值为 20,那么:
运算符描述实例
+加法 - 把运算符两边的操作数相加a + b 将得到 30
-减法 - 把左操作数减去右操作数a - b 将得到 -10
*乘法 - 把运算符两边的操作数相乘a * b 将得到 200
/除法 - 把左操作数除以右操作数b / a 将得到 2
%求模 - 把左操作数除以右操作数,返回余数b % a 将得到 0
**指数 - 执行指数计算a**b 将得到 10 的 20 次方


回复 支持 反对

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2015-7-3 20:06:01 | 显示全部楼层
Ruby 比较运算符
假设变量 a 的值为 10,变量 b 的值为 20,那么:
运算符描述实例
==检查两个操作数的值是否相等,如果相等则条件为真。(a == b) 不为真。
!=检查两个操作数的值是否相等,如果不相等则条件为真。(a != b) 为真。
>检查左操作数的值是否大于右操作数的值,如果是则条件为真。(a > b) 不为真。
<检查左操作数的值是否小于右操作数的值,如果是则条件为真。(a < b) 为真。
>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。(a >= b) 不为真。
<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。(a <= b) 为真。
<=>联合比较运算符。如果第一个操作数等于第二个操作数则返回 0,如果第一个操作数大于第二个操作数则返回 1,如果第一个操作数小于第二个操作数则返回 -1。(a <=> b) 返回 -1。
===用于测试 case 语句的 when 子句内的相等。(1...10) === 5 返回 true。
.eql?如果接收器和参数具有相同的类型和相等的值,则返回 true。1 == 1.0 返回 true,但是 1.eql?(1.0) 返回 false。
equal?如果接收器和参数具有相同的对象 id,则返回 true。如果 aObj 是 bObj 的副本,那么 aObj == bObj 返回 true,a.equal?bObj 返回 false,但是 a.equal?aObj 返回 true。


回复 支持 反对

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2015-7-3 20:06:24 | 显示全部楼层
Ruby 赋值运算符
假设变量 a 的值为 10,变量 b 的值为 20,那么:
运算符描述实例
=简单的赋值运算符,把右操作数的值赋给左操作数c = a + b 将把 a + b 的值赋给 c
+=加且赋值运算符,把右操作数加上左操作数的结果赋值给左操作数c += a 相当于 c = c + a
-=减且赋值运算符,把左操作数减去右操作数的结果赋值给左操作数c -= a 相当于 c = c - a
*=乘且赋值运算符,把右操作数乘以左操作数的结果赋值给左操作数c *= a 相当于 c = c * a
/=除且赋值运算符,把左操作数除以右操作数的结果赋值给左操作数c /= a 相当于 c = c / a
%=求模且赋值运算符,求两个操作数的模赋值给左操作数c %= a 相当于 c = c % a
**=指数且赋值运算符,执行指数计算,并赋值给左操作数c **= a 相当于 c = c ** a


回复 支持 反对

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2015-7-3 20:09:13 | 显示全部楼层
本帖最后由 lzp19921225 于 2015-7-4 09:31 编辑

Ruby并行赋
Ruby也支持变量的并行赋值。这使得多个变量可以通过一行的 Ruby 代码进行初始化。例如:
  
a  = 10
  
b  = 20
  
c  = 30
使用并行赋值可以更快地声明:
  
a,  b, c = 10, 20, 30
并行赋值在交换两个变量的值时也很有用:
  
a,  b = b, c
回复 支持 反对

使用道具 举报

0

主题

57

帖子

731

积分

高级会员

Rank: 4

积分
731
发表于 2016-2-29 13:17:13 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2016-10-9 16:47:29 | 显示全部楼层
本帖最后由 lzp19921225 于 2016-10-10 16:54 编辑

ruby是面向对象的语言,接下来介绍一些ruby的一些常用知识,也可以算是个人笔记,帮助那些刚接触ruby的人快速熟悉这门语言,起到一个抛砖的作用.
回复 支持 反对

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2016-10-10 17:43:49 | 显示全部楼层
本帖最后由 lzp19921225 于 2016-10-11 10:08 编辑

在阅读ruby的文档或者书籍中,有几下规定
类名.方法名(代表这个方法是类方法,也就是Java中的静态方法)
类名#方法名(代表这个方法是实例方法,是需要通过实例对象进行调用)
类型::常量名(代表这是一个类常量)

下面让我们试着自定义一个类吧.
class MyClass
        
        #自定义常量
        Version="1.0"

        def initialize msg
                @msg=msg
        end

        #实例方法
        def say
                puts "自定义类并实例,输出初始化信息:#{@msg}"
        end

        #类方法(静态方法)
        def self.version
                puts "自定义类的版本为:#{Version}"
        end

end

MyClass.version #调用类方法

mClass=MyClass.new("hello Ruby!") #生成实例
mClass.say #调用实例方法

puts MyClass::Version #打印类的常量

1.在ruby中,关键字def用来定义方法,而方法的参数并不强制要求必须用小括号"()"包裹,
因此例子中为方法 initialize 设置一个 msg 的参数,这样的写法是"合法"的.
2.MyClass#initialize这个方法为初始化方法(构造方法),在你使用MyClass.new方法
生成实例对象的时候由底层进行调用.
3.类的常量可以通过一目运算符"::"用事例中的形式直接取出.
4.常量的定义方式为首字母大写.实例变量的定义方式为 @+变量名
5.ruby中拼串拥有自己的一套特殊方式,比如在JS中拼串 "hello,"+"ruby" 等同于在ruby中拼串 "hello,#{\"ruby\"}"


回复 支持 反对

使用道具 举报

2

主题

15

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2016-10-17 00:20:17 | 显示全部楼层
接下来介绍ruby类的成员变量和属性

首先定义一个类
class Test

        def initialize
                @name = "Ruby"
                @age = 18
        end

end

这样,我们的Test类就拥有了两个成员变量了,一个是@name,一个是@age,
接下来添加方法,

class Test

        def initialize
                @name = "Ruby"
                @age = 18
        end

        def name
                return @name
        end

        def name= name
                @name = name
        end

        def age
                return @age
        end

        def age= age
                @age = age
        end

end

这样,我们就给类添加了两个成员变量和两个属性了.成员变量是对内使用,属性是对外使用.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-10-19 15:09 , Processed in 0.068125 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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