• Ruby快速入门(二):变量、数字、数组和运算符


    原文地址:http://blog.csdn.net/zhu_xz/article/details/4909306

    上一篇文章 说了Ruby的安装和运行,也简单的说了下类和对象,这里主要谈谈变量和数字。

    先说常量 。如果变量名以大写字母开头,就被视为常量,但通常是所有字母都大写。但和其他语言不同,在Ruby中,你仍然可以改变常量的值,当然解释器会抛出一个警告:

    1. #! /usr/bin/ruby  
    2. CONSTANT = 1  
    3. print "#{CONSTANT}/n"  
    4. CONSTANT += 1  
    5. print "#{CONSTANT}/n"  

    这段代码定义了一个名为CONSTANT的常量,并初始化为1。然后对其的改动却是被允许的,但解释器会抛出一个如下所示的警告:

    ./2.rb:4: warning: already initialized constant CONSTANT

    现在开始看变量 。在Ruby中,变量都是“无类型”的,不用指定其具体类型,解释器会根据其值自行判断。但Ruby也提供了一些方法来判断变量的当前类型:

    1. print "#{1.class}/n"  
    2. print "#{1.kind_of? Integer}/n"  

    第一行代码打印变量1的类型(还记得在Ruby中,一切都是对象吧?!),第二行则是打印1是否是Integer的结果。

    同时,Ruby还提供了一些函数进行变量类型的转换,如整数可调用to_f函数转化为浮点数、调用to_s函数转化为字符串等等。

    在Ruby中,变量的作用域 有以下四种类型(姑且让我用C++的术语描述):以$开头的全局变量、以@@开头的类静态变量、以@开头的类成员变量,以及无前缀的局部变量。对于常量,如果其在类中定义,则其作用域为该类;否则为全局常量。

    简单的说下Ruby里的数字 。在Ruby中,Integer是整数的基类,和机器字长相同的整数则用Fixnum类表示,大整数则会自动转化为Bignum类型。双精度浮点数则用Float类表示,有理数则用Rational类表示。

    然后看看数组 。Ruby中的数组用Array类表示,其中每个元素都可以是任意类型的对象。数组的第一个元素下标为0,最后一个元素则可用下标-1来访问。

    1. #! /usr/bin/ruby  
    2. arr1 = ["ele1", 2, "ele3"]  
    3. arr2 = ["ele4", arr1]  
    4. arr3 = arr1 + arr2  
    5. print "#{arr1.size} #{arr1[-1]}/n"  
    6. print "#{arr2.size} #{arr2[arr2.size - 1][-1]}/n"  
    7. print "#{arr3.size} #{arr3[4][2]}/n"  

    这里,第一个数组arr1包含3个元素:字符串ele1、数字2和字符串ele3;第二个数组arr2包含2个元素:字符串ele4和数组arr1的一个引用;第3个数组arr3则包含了头两个数组的引用。注意,这里都是传递的引用,而不是拷贝得到了一个新的对象。 最后打印3个数组的长度,以及arr1的最后一个元素。

    Ruby的数组长度可以动态改变:

    1. arr = Array.new  
    2. # 下面两个等价语句都是将元素添加到数组最后  
    3. arr << "ele1"  
    4. arr.push(2)  
    5. # 这时数组为["ele1", 2]  
    6. # 插入到指定位置  
    7. arr.insert(0, "ele0")  
    8. # 这时数组为["ele0", "ele1", 2]  
    9. # 返回并删除最后一个元素  
    10. arr.pop  
    11. # 这时数组为["ele0", "ele1"]  
    12. # 删除指定位置的元素  
    13. arr.delete_at(0)  
    14. # 这时数组为["ele1"]  
    15. # 删除指定的元素  
    16. arr.delete("ele1")  
    17. # 这时数组为[]  

    Ruby还提供了数组的集合操作:

    1. arr1 = [1, 2, 3]  
    2. arr2 = [2, 3, 4]  
    3. arr4 = arr1 - arr2 # [1]  
    4. arr5 = arr1 & arr2 # [2, 3]  
    5. arr6 = arr1 | arr2 # [1, 2, 3, 4]  

    此外,Ruby还提供了针对数组的排序(sort、reverse)和去除重复元素(uniq)等操作。

    最后看看Ruby中的操作符 。这里只简单说说和C/C++不同的部分。Ruby中提供了计算幂的运算符**(例如2**8的结果为256),以及平行赋值(例如a, b, c = 1, 2, 3将a、b、c分别赋值为1、2、3)、<=>(相等返回0,大于返回1,小于返回-1),但取消了++和--两个运算符。并且,Ruby中可以使用and(或&&)、or(或||)和not(或!)来进行逻辑运算。

  • 相关阅读:
    经典入门_排序
    经典入门_贪心算法
    经典入门_Hash的应用
    经典入门_排序
    uva 839
    uva 327
    uva 699
    uva 712
    uva 297
    uva 548
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2115534.html
Copyright © 2020-2023  润新知