[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| ...}
控制循环的关键字有:
break
next
(相当于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配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
随机推荐
- 在Android中使用Protocol Buffers(下篇)
本文来自网易云社区. FlatBuffers编码数组 编码数组的过程如下: 先执行 startVector(),这个方法会记录数组的长度,处理元素的对齐,准备足够的空间,并设置nested,用于指示记 ...
- Spark Streaming 官网上提到的几点调优
总的来说,需要考虑以下两点: 1. 有效地运用集群资源去减少每个批次处理的时间 2. 正确的设置batch size,以使得处理速度能跟上接收速度 一. 为了减少处理时间,主要有以下几个优化点: 1 ...
- 多线程中wait、notify理解
实在惭愧,java开发多年,多线程运用一直不多,该知识点理解也不够,不怎么会用.赶上使用多线程 生产者.消费者模式,学习下该知识点. synchronized 获取锁 wait 阻塞本线程,释放对象 ...
- Git工具详解以及与GitHub的配合使用
git和Github 概念 git --- 版本控制工具(命令). 工具介绍官方网站:http://git-scm.com 工具下载地址:http://git-scm.com/download/ gi ...
- 【ACM】喷水装置
喷水装置(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以 ...
- Java面向对象_常用类库api——对象比较器
概念:对两个或多个数据项进行比较,以确定他们是否相等,或确定他们之间的大小关系及排列顺序成为比较. 1.Comparable接口: 此接口强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然 ...
- (转)认识 Linux 文件系统
7.1 认识 Linux 文件系统 原文:https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/59.html Linux 最传统 ...
- Linux中ext2文件系统的结构
1.ext2产生的历史 最早的Linux内核是从MINIX系统过渡发展而来的.Linux最早的文件系统就是MINIX文件系统.MINIX文件系统几乎到处都是bug,采用的是16bit偏移量,最大容量为 ...
- jquery字符串数组转json字符串 C#json字符串转字符串list
一.jquery字符串数组转json字符串 var str=['1','2','3']; var jsonText= JSON.stringify(str);//把一个对象转换成json字符串 str ...
- pat1049. Counting Ones (30)
1049. Counting Ones (30) 时间限制 10 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The task ...