[Rails学习之路]初识Ruby(一)
Ruby是一门动态的、强类型的、纯面向对象的编程语言。它和Python非常相似,但比Python面向对象更加彻底、使用更加灵活、语法更加复杂、也更为有趣。
抛开做事情到底应该有多少种方法这个问题,我相信不止我一个人是为了学习Rails才学习Ruby。每当我拿起Django、Flask或者Python的时候,就会听到有人在说Ruby on Rails。
于是我决定今天开始学习Rails。第一天先来简单学习一下Ruby。
数据类型
首先,因为Ruby的纯面向对象的特征,不存在Java中的“原始数据类型”这种说法。Ruby中内置的几种数据类型也是对象,和其他的对象并无差别。
数值
Numeric包括整数
Int和浮点Float。字符串
String- Ruby中的字符串也有单引号、双引号、三引号这三种包裹的方式。
- Ruby中不存在字符类型。只有长度为1的字符串。
- 求字符串长度?
str.length而不是len(str)。 - 比较字符串的方法和Java近乎相反。
==比较字符串的值,而equal?比较对象是否相同。
符号
Symbol变量、方法、类都可以表示成符号。如:
:method,:variable。布尔
Boolean取值为
true或false。与Python不同的是,只有false和nil才为假,其余均为真,包括0、''、[]等。数组
Array[1, 'apple', false]字典
Hash['Jan'=>1, 'Feb'=>2, ...]
类型之间的转换也是面向对象的风格,如str.to_i,而不是int(str)。当然to_f、to_s之类的也是有的。
奇怪的符号
以前我一直觉得Objective-C差不多把键盘上的符号都用光了。现在我才知道,和Ruby相比算是小巫见大巫了。
$var:表示全局变量。如$stdin。@var:表示实例变量。@@var:表示类变量。:var:表示符号变量。#{var}:表示在字符串中的占位。如:name = "world"
puts "Hello, #{name}!"
%var:用于格式化字符串。与Python用法类似。上面的例子可以改写为:puts "Hello, %s" % name
除此之外,还有一个更奇怪的,虽然没用什么符号,但在Ruby中,首字母大写表示常量。
输入输出
Ruby中puts和print常用来输出。
puts在输出后会自动换行,而print不会。
在输出字符串时也可以拼接:
a = "Hello, "
b = "World!"
puts a + b
在Python通常使用逗号,但Ruby中逗号会产生换行。
使用gets获取用户输入,chomp用来去除多余的空行。例:
print "What's your name? "
name = gets.chomp
print "How old are you? "
age = gets.chomp.to_i
读写文件的操作与Python大同小异。常用的方法有open、read、write、close等。
判断、循环和选择
判断语句有if和unless(if not)。
Ruby中有三元运算符x ? y : z,不需要用别扭的y if x else z。
循环语句有while、until(while not)和loop(while true)。
还有传统的for循环:for x in list
Ruby风格的写法:list.each do |x|
另一种写法:list.each {|x| ...}
控制循环的关键字有:
breaknext(相当于continue)redo重做该次循环retry重做循环
我不知道最后这俩有什么用?
选择语句的例子:
case a
when 1..5
puts "It's between 1 and 5"
when 6
puts "It's 6"
when String
puts "You passed a string"
else
puts "You gave me #{a} -- I have no idea what to do with that."
end
[Rails学习之路]初识Ruby(一)的更多相关文章
- [Rails学习之路]初识Ruby(二)
继续上次Ruby的学习.接下来就到了Ruby的方法. Ruby的方法与Python仍然很像.使用def定义,可以使用undef取消定义. 在Ruby中,经常可以看见方法后面跟有"?" ...
- 开始了大概三四天的Rails学习之路
最近因为一位极光推送朋友,我开始了大概三四天的Rails学习之路,最终达到的水平是可以比较轻松地做出大部分功能,然后自我感觉可以自如地按照Rails的设计思想去思考.由于编程的日益流行,我结识了越来越 ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- [Rails学习之路]Rails文件结构与路由
约定优于配置和RESTful是Ruby on Rails十分推崇的哲学.在一个默认的RESTful的Rails项目中,使用资源和HTTP动词来帮助组织项目. 假如有一个使用scaffold创建的Rai ...
- [Rails学习之路]Rails路由配置
如果是使用Rails的默认约定,那么几乎是零配置. 但有些时候,我们可能不得不(或者更喜欢)进行一些特殊的配置. 其实Rails在路由功能中也有很丰富的配置选项. routes.rb文件中靠前的规则优 ...
- Python学习之路——初识Python
一.第一个程序Hello World: 1.打印输出Hello World: Python2打印方法: >>> print "hello world"hello ...
- python学习之路 初识xml
import requests from xml.etree import ElementTree as ET r = requests.get('http://www.webxml.com.cn// ...
- Redis——学习之路四(初识主从配置)
首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...
- Redis——学习之路三(初识redis config配置)
我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
随机推荐
- C#的常量和变量以及其作用域和命名规范
1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须在定义的时候初始化. 语法: const 类型名 常量名=常量表达式 ...
- Typography 文字排版
标签的语义 1. 含语义的标签 2. 不含语义, 但是具有样式的class <h1></h1> <p class="h1"></p> ...
- matlab矩阵与数组
数组运算:数与数组加减:k+/-A %k加或减A的每个元素数组乘数组: A.*B %对应元素相乘数组乘方: A.^k %A的每个元素k次方:k.^A,分别以k为底A的各元素为指数求幂值数除以数组: k ...
- xml 的使用和解析 及解析工具
xml 一.xml简介 1. 什么是xml XML:Extensiable Markup Language,可扩展标记语言.和HTML有语法相似之处,也有作用上的不同: 和html相似: 都是由一堆标 ...
- 10分钟了解什么是BFC
BFC对于已经是一个耳熟能详的词汇了,而且在前端面试中,这题也是一个高频题.虽然我们平时在开发的时候知道如何利用BFC来解决问题,但是我们要具体说出BFC的概念和怎么触发BFC,我相信很多小伙伴也是和 ...
- k8s 更新应用程序
参考:https://kubernetes.io/docs/tutorials/kubernetes-basics/ 更新应用程序 用户希望应用程序始终可用,开发人员每天需要部署几次新版本的应用程序. ...
- linux下apache无法启动之(httpd not running, trying to st)
这突然接手的服务器,本来是没什么事的,可是因为机房的问题,需要将服务器迁回来,结果可想而知,关机重启了,其中有一台估计诚心给我过不去,待配置好ip并重启了服务后,发现apache无法正常启动了! 先还 ...
- GTY's gay friends 线段树判断区间是否有相同数字
http://acm.hdu.edu.cn/showproblem.php?pid=5172 判断一个区间是否为全排列是: 1.区间总和 = (1 + R - L + 1) * (R - L + 1) ...
- C# 或与非
或 ||与 &&非 ! 逻辑或 | 逻辑与 & 逻辑非 ~
- Storm概念学习系列之Storm与Hadoop的角色和组件比较
不多说,直接上干货! Storm与Hadoop的角色和组件比较 Storm 集群和 Hadoop 集群表面上看很类似.但是 Hadoop 上运行的是 MapReduce 作业,而在 Storm 上运行 ...