当前位置: 首页 > news >正文

【转】Ruby入门教程(一)

1. Ruby环境搭建

  在Windows下,搭建Ruby环境,比较简单的方法是在“RubyInstaller”上下载一个合适的版本(D瓜哥使用的是最新版),直接安装就可以了。

  另外,吐槽两句,网上有人说Windows不适合搞Ruby开发,刚开始D瓜哥不信,昨天因为搭建Ruby on Rails的环境,Mysql数据库的驱动死活安装不成功!太折腾人了。所以,如果真的想玩Ruby,还是使用Linux系统吧。

2. Ruby的注释

  和其他常见编程语言一样,Ruby也分为“单行注释”和“多行注释”。不同的是,Ruby使用的注释符号和Java、C/C++等编程语言不一样。

  另外,Ruby偏好使用单行注释:

# This is a comment line
# This is a comment line

  Ruby中,多行注释比较少见,D瓜哥是接触Ruby十几天后才知道多行注释的语法,之前一直在纳闷多行语法该怎么写。

=begin
This is comment.
This are two comments.
=end

  上述代码中,高亮的两行代码是注释的开头和结尾,这两行的开头必须和上述代码保持一直,否则报错。经过D瓜哥的测试,开头后面可以添加注释。

3. Ruby变量

  Ruby变量的命名有自己的特点:变量的第一个字母是用来表明变量用途。具体情况如下:

  1. 局部变量,方法参数和方法名通常都是以小写字母或者下划线开头的;
  2. 全局变量以$开头;
  3. 实例变量以@开头;
  4. 类变量以@@开头;
  5. 类名,模块名和常量以大写字母开头。

  Ruby变量的命名规则是:变量名是以小写字母或者下划线开始(D瓜哥在IRB中测试,也可以使用$开头,但是使用_$开头就会报错;使用$_开头没有问题),其后由大小写英文字母,数字和下划线组成。变量名是区分大小写的,变量名的字符长度没有限制。另外,需要注意的是,给变量命名的时候,尽量遵守上面的根据变量首字母分类的约定。D瓜哥认为:变量的命名,可以反应出一个程序猿的代码素养。

mystr = "Are you ready?" #局部变量

class Person #类名
    @@year = 2013    #类变量

    def initialize(name)    #构造函数        
        @name = name     #示例变量
    end

    def name    #方法名
        @name
    end

    def name=(name)
        @name = name
    end
end

puts mystr

4. 数组  

废话少说,直接上代码。

##1. 数组定义
arr1 = []
arr2 = Array.new
arr3 = ['1', '2', '3']

##2. 输出
puts "Output: \n"
print arr3, "\n" #输出: ['1', '2', '3']
puts arr3[0]    #输出:1
print arr3.join(",")  #输出:1,2,3

##3. 访问数组元素
puts "\nArray Element\n"
p arr3[0]
p arr3[-1]  #输出最后一个数据
p arr3.first
p arr3.last
p arr3.max
p arr3.min
p arr3.length
p arr3.size

##4. 数组操作
puts "\nArray method\n"
p arr3[4] = '5'    #此时arr3[3]默认为nil
p arr3.delete_at(3)    #删除指定下标的元素
p arr3[2] = ["3a", "3b", "3c"]
p arr3.delete(["3a", "3b", "3c"])
p arr3.push('6')
p arr3.insert(3, 'b')
p arr3<<"f"<<2        #从左到右依次加入元素
p arr3.pop        #删除尾元素
p arr3.shift       #删除首元素
p arr3.clear

##5. 数组运算
p "Array Operator"
aaa = ["aa", 4, 5, "bb"]
bbb = [4, 1, 3, 2, 5]
p aaa + bbb    #输出:["aa", 4, 5, "bb", 4, 1, 3, 2, 5]
p aaa * 2      #输出:["aa", 4, 5, "bb", "aa", 4, 5, "bb"]
p bbb - aaa    #输出:[1, 3, 2]
p aaa | bbb    #输出:["aa", 4, 5, "bb", 1, 3, 2]
p aaa & bbb    #输出:[4, 5]
p bbb.sort     #输出:[1, 2, 3, 4, 5]
p aaa.reverse    #输出:["bb", 5, 4, "aa"]
p bbb.sort.reverse

  由于Ruby的迭代器及其强大,在Ruby编程中,利用数组的这些函数再加上迭代器可以写出非常“炫”的代码!

  这一节,D瓜哥介绍了Ruby中的注释、变量声明以及数组操作。下一节,D瓜哥将介绍Ruby中的字符串、判断语句以及循环语句等。敬请继续关注!

参考资料

  1. Ruby 类的属性、变量、常量和方法定义
  2. Ruby程式語言入門
  3. Ruby数组操作的总结
  4. Ruby字符串处理函数总结列表分享


作 者:  D瓜哥,http://www.diguage.com/
原文链接: http://www.diguage.com/archives/92.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

相关文章:

  • 进程【TLCL】
  • 深入数据库索引背后算法及数据结构
  • 基于游标的分页接口实现
  • Docker1---安装
  • 如何利用极致业务基础平台构建一个通用企业ERP之十二收款单设计
  • 如何给esxi打补丁
  • OpenCart之信息中心(Information)模块教程
  • KbmMW 4.40.00 正式版发布
  • keepalived实现lvs高可用并负载均衡lamp
  • java调试技巧
  • 浅析微信支付:支付验收示例和验收指引
  • 网络中IP地址划分
  • 链表六:二叉搜索树与双向链表
  • 新一代海量数据架构分析:NoHadoop
  • chapter1.3、JS的分支语法
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • create-react-app做的留言板
  • css选择器
  • Git的一些常用操作
  • Gradle 5.0 正式版发布
  • HTML5新特性总结
  • isset在php5.6-和php7.0+的一些差异
  • Java反射-动态类加载和重新加载
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Kibana配置logstash,报表一体化
  • Mysql数据库的条件查询语句
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 如何在 Tornado 中实现 Middleware
  • 应用生命周期终极 DevOps 工具包
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 栈实现走出迷宫(C++)
  • 《码出高效》学习笔记与书中错误记录
  • 阿里云API、SDK和CLI应用实践方案
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • #stm32整理(一)flash读写
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (javascript)再说document.body.scrollTop的使用问题
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (转)VC++中ondraw在什么时候调用的
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET 事件模型教程(二)
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET业务框架的构建
  • 。Net下Windows服务程序开发疑惑
  • @Query中countQuery的介绍
  • @RequestMapping-占位符映射
  • [@Controller]4 详解@ModelAttribute
  • [04]Web前端进阶—JS伪数组
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [51nod1610]路径计数
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [AX]AX2012 AIF(四):文档服务应用实例