写在开头
因为一些原因最近开始我的学习Ruby之旅,起初还是有点小兴奋的,毕竟我们都是爱学习的娃(脸红)。
关于Ruby,这里简单介绍一下。
首先Ruby是一种脚本语言,就像我们平时用的shell一样,此外它还是一种纯粹的面向对象编程语言,在接触了ruby之后,我觉得在语义化方面ruby做的很好,语法表达什么的都很接近平时说的语言。
语法上,因为编程语言大多是相通的,也没有那么难理解,值得说的是我觉得在学习一门语言的时候不用花很多时间去记它的语法,只是背过不会用还是徒劳,我的方法是先大致了解一下它的语法,过程中看一看它的demo,可以的话自己写一写,想不起来的时候网上查一查就知道了,所谓用得多了,自然就会了。
当然,首先你需要配置环境。
FizzBuzz的练习
题目:
用Ruby实现一个程序,输出从一到指定范围的数字,当遇到3的倍数时就输出"Fizz",当遇到5的倍数时就输出''Buzz'',当遇到既是3的倍数又是5的倍数时就输出''FizzBuzz'';
例如:如果范围是1~15,那么输出如下:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
当我拿到这个题的时候,大致分了以下几步去完成:
1. 新建一个ruby文件,输出''hello'';
2. 写一个循环,输出对应数字;
3. 在循环中加上判断条件,输出对应的字符串或数字;
4. 这段程序抽了一个方法,并将循环次数作为参数传给该方法;
这样一分的话每一步都很容易,也不容易出错,主要的点有标准输出函数,循环,条件判断,方法,语法上不知道的就去查。
看起来很容易,但是在我写的时候因为一点疏漏找了好久才找到错误,因为最初写的时候并不是按照上面的顺序写的,结果在写if条件的时候忘了加end,结果一直运行出错,才不得不回头一步步开始,然后很快就完成了。
so,一定要一步步慢慢做才更高效。
以下是我的实现,欢迎交流学习哈:
1. 没有单元测试的版本
2. 有单元测试的版本
这里大致说一下有单元测试的版本,跟其他语言的测试一样,有方法名,断言。
在Ruby的单元测试中,需要定义一个类继承于Test::Unit::TestCase,这里的''::''表示命名空间,可以理解为路径,例如''/etc/user''。
代码第一行是引入''test/unit'',因为后面要继承它,第二行是引入实现的文件,因为我将实现封装了一个类,所以需要生成一个实例,即调用类的new方法,这是每个类默认有的,然后定义了一个方法,方法体内有两个断言,表示两个测试用例,ruby中的断言有多种写法,如下:
1. assert 2 == 2
2. assert_equal 2, 2
3. assert_equal 2, 1+1
左边的是期望的结果,右边的是实际的结果。
安利时间
给大家推荐一个学习Ruby的''游戏'',它是一个类似于闯关游戏的东西,会带着你在闯关的过程中学到很多,关于Ruby基础足够了,戳这里安装哦
(用法见readme.md)