[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配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
随机推荐
- CacheManager 概述
1. CacheManager 管理缓存,而缓存可以是基于内存的缓存,也可以是基于磁盘的缓存 2. CacheManager 需要通过 BlockMananger 来操作数据: 3. 当 Task 运 ...
- loj#6433. 「PKUSC2018」最大前缀和(状压dp)
传送门 今天\(PKUWC\)试机的题 看着边上的大佬们一个个\(A\)穿咱还是不会-- 我们考虑枚举最大前缀和,如果一个前缀\(1\)到\(p\)是最大前缀和,那么\(p\)后面的所有前缀和都要小于 ...
- PAT甲级——1094 The Largest Generation (树的遍历)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/93311728 1094 The Largest Generati ...
- STP-15-PortFast端口
PortFast是大家熟知的传统STP和PVST+改进特性,它也是RSTP和MST中标准化的增强特性.实质上,它定义了个一个边界端口.边界端口在启用之后立刻进入转发状态,不产生拓扑变化事件,不会因为处 ...
- MD5-UTF8-大写加密
private string GetMD5Hash(string str) { string md5Str = ""; byte[] buffer = Encoding.UTF8. ...
- Table AUD$
How to Truncate, Delete, or Purge Rows from the Audit Trail Table AUD$ 转到底部 PURPOSE This document e ...
- 强制更新客户端Silverlight XAP 文件
在发布小程序更新的时候访问的总是原来的程序,猜想应该是缓存的原因.在网上查找方法 <div id="silverlightControlHost"> <objec ...
- 约瑟夫问题(vector的使用)
题目大意:有n个人围坐在圆桌周围,每个人都有一个固定的编号. 从第s(<=n)个人开始报数(按照顺时针方向,从1开始),报到m的人出列,接着再从出列着的 下一个人开始报数(依然从1开始),报到m ...
- iOS开发ReactiveCocoa学习笔记(三)
RAC常用用法: 1.监听按钮的点击事件: UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame ...
- EasyUI Combobox 的 onChange,onSelect,onClick 事件
EasyUI 中 Combobox 选项发生改变时会触发 onChange,onSelect,onClick,3 个事件.最近要做一个级联的 Combo 菜单,类似于选择地址时让用户填写省,市,区的菜 ...