- UID
- 152059
- 在线时间
- 0 小时
- 最后登录
- 2015-4-20
- 注册时间
- 2012-7-19
- 宅魂
- 602 点
- 贡献
- 133 点
- 宅币
- 9908 枚
- 灵石
- 0 块
- 元气(技能点)
- 7 点
- 活跃
- 0 ℃
- 听众
- 5
- 收听
- 0
该用户从未签到
第一章
- 积分
- 12268
|
本文简要介绍Ruby的一些基本语法,阅读之后应该能写出基本的Ruby程序。
阅读的时候请保持irb开启状态(没装的话戳这里→ https://www.gn00.com/t-90723-1-1.html
注意:我的irb输入提示符是'>>',结果提示符是'=>'
表达式
表达式是构建一个程序的基础部分之一。在irb中输入表达式,可以进行一些简单的计算。例如输入:
[mw_shl_code=text,true]>> 486[/mw_shl_code]
得到的结果是
[mw_shl_code=text,true]=> 486[/mw_shl_code]
[fold=没得到结果的看这里]不用输入那两个大于号啊那是提示符啊蠢货@3*[/fold]
同样可以用其他一些表达式来进行试验:
[mw_shl_code=text,true]>> 137 + 349
=> 486
>> 1000 - 334
=> 666
>> 5 * 99
=> 495
>> 10 / 5
=> 2
>> 2.7 + 10
=> 12.7
>> 3 * 5 + 10 - 6
=> 19
>> (2 + 3) * 5
=> 25
>> 10 / 3
=> 3[/mw_shl_code]
Ruby使用的是中序表达式,和常用的数学表达式是一致的。值得注意的是最后一个10/3的样例,由于10和3都是整数,所以相除的结果会被自动截断成整数。如果需要保留小数部分,可以这样:
[mw_shl_code=text,true]>> 10.0 / 3
=> 3.3333333333333335[/mw_shl_code]
这里由于10.3是一个浮点数(小数),在进行除法的时候,3会被自动转换为浮点数,然后进行计算。
另外,还可以用加号'+'来进行字符串的拼接:
[mw_shl_code=text,true]>> 'All hail ' + 'K1' + '!'
=> "All hail K1!"[/mw_shl_code]
看到这里,你应该能够把irb当计算器用了吧。那么,我们接下来介绍的是Ruby中的变量。
变量
变量是用来保存程序运行过程中状态的。在Ruby中,一般使用小写字母或下划线开头作为变量名(局部变量)。变量可以用等于号'='进行赋值。例如:
[mw_shl_code=text,true]>> a = 233
=> 233[/mw_shl_code]
给变量赋值之后,就可以无数次取得该变量里的值:
[mw_shl_code=text,true]>> a
=> 233[/mw_shl_code]
在赋值时,等号右边可以是一个表达式,也可以是一个字符串。(其实在Ruby里一切都是对象,均可以给变量赋值)
[mw_shl_code=text,true]>> b = 3749 * 279 + 111
=> 1046082
>> c = 'the return of the king'
=> "the return of the king"[/mw_shl_code]
当然,变量和变量,变量和表达式之间也可以进行计算:
[mw_shl_code=text,true]>> a = 123
=> 123
>> b = 345
=> 345
>> c = a + b + 567
=> 1035
>> d = 'hello, '
=> "hello, "
>> e = d + 'world!'
=> "hello, world!"[/mw_shl_code]
条件语句
程序之所以能够实现复杂的功能,是因为条件语句的存在。在Ruby中最基本的条件语句是if-elsif-else-end:
[mw_shl_code=ruby,true]if <condition> then
elsif <condition> then
somecode
...
else <condition> then
somecode
end[/mw_shl_code]
该语句从上而下判断每一个condition,如果condition的值为真,那么就执行其后到elsif/else之前的语句;否则继续判断下一条elsif或else。
注意,是elsif而不是elseif。作为condition的语句可以是一些大小的判断,经常用到的有大于'>',小于'<',大于或等于'>=',小于或等于'<=',相等'=='(注意这里是两个等号),不相等'!='。
在分行写的时候,关键字then可以省略。例如,如果需要根据分数score判断是否及格:
[mw_shl_code=text,true]>> if score > 60
>> puts 'pass'
>> else
?> puts 'failed'
>> end
pass
=> nil[/mw_shl_code]
输入输出
程序的目的是处理输入数据并进行输出。最基本的Ruby输入输出是两个函数puts和gets。
输出函数是puts,作用是输出一行的内容并换行。例如刚才判断分数是否及格的代码段中,就用puts函数来进行了输出。
如果需要输出变量的值,可以采用字符串拼接或特殊的#{变量名}的语法:
[mw_shl_code=text,true]>> name = 'Matz'
=> "Matz"
>> puts 'hello, ' + name
hello, Matz
=> nil
>> puts "hello, #{name}"
hello, Matz
=> nil
>> puts 'hello, #{name}'
hello, #{name}
=> nil[/mw_shl_code]
值得注意的是(暂时没注意到也没关系),在Ruby中,单引号括起来的字符串不会自动转义,而双引号则会自动替换变量和转义字符。
输入函数是gets,作用是读入一行的输入。当然,可以把输入存放到变量中:
[mw_shl_code=text,true]>> a = gets
ablakadabla
=> "ablakadabla\n"
>> puts a
ablakadabla
=> nil[/mw_shl_code]
[fold=在意字符串末尾'\n'的看这里]如果不想要字符串末尾的'\n',可以chomp一下。[/fold]
想玩一下的熊孩子可以试一下这个语句会得到什么:
[mw_shl_code=applescript,true]>> puts gets[/mw_shl_code]
实例
看到这里,应该能够试着写一下程序了吧。下面是一个简单的例子,根据输入的分数来进行等级判断,90~100分为A,80~89为B,70~79为C,60~69为D,0~59为E。顺带演示一下怎么用Ruby的主程序ruby来执行脚本文件。
现在,打开你最喜欢的文本编辑器,输入以下代码:
[mw_shl_code=ruby,true]#!/usr/bin/ruby
# encoding: UTF-8
puts '输入分数:'
score = Integer(gets)
if score < 0 || score > 100
puts '非法输入!'
elsif score >= 90
puts '等级A'
elsif score >= 80
puts '等级B'
elsif score >= 70
puts '等级C'
elsif score >= 60
puts '等级D'
else
puts '等级E'
end[/mw_shl_code]
将该文本用UTF-8进行保存(为了支持中文,第2行代码也是这个用意)。
如果你使用的是M$的系统,比如保存在C:\ruby\test.rb,那么可以打开一个cmd窗口,然后切换目录到C:\ruby\。如果ruby的安装及环境变量配置正确,就可以用
[mw_shl_code=text,true]ruby test.rb[/mw_shl_code]
来运行代码。运行结果如下:
总之是完成了所需要的功能。
本文主要是粗略地介绍了Ruby基本的表达式和语句,变量,条件判断和输入输出,主要也是新人向的教程一篇。之后也会和@Richeir @轻舟过 写详细的Ruby教程,应该会涵盖Ruby的条件,循环,字符串,函数和块,数组和散列,类操作等内容,欢迎大家一起跟着学。学习中遇到问题跟帖问,不清楚的地方也请指出。
|
评分
-
参与人数 3 | 宅魂 +1 |
宅币 +90 |
贡献 +8 |
元气(技能点) +1 |
收起
理由
|
蛋菊战士
| + 1 |
+ 3 |
|
|
Σ( ° △ °|||)︴ 碉堡了 |
hcl
| |
+ 37 |
+ 8 |
+ 1 |
Σ( ° △ °|||)︴ 碉堡了 |
Richeir
| |
+ 50 |
|
|
Σ( ° △ °|||)︴ 碉堡了 |
查看全部评分
|