[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配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
随机推荐
- git 仓库拆分方案对比
此文已由作者张磊授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言 git 拆分仓库在网上已有的案例上来看,分为 submodule 和 subtree. 还有基于这两个方 ...
- InnoDB信息说明
InnoDB是MySQL数据库发展至今一款至关重要的数据库存储引擎,其不仅支持事务特性,并且具有丰富的统计信息,便于数据库管理人员了解最近InnoDB存储引擎的运行状态. 早期版本的InnoDB存储引 ...
- Linux6.7 安装图文
Linux6.7 安装图文 选择第一个进行安装 1. Install or upgrade an existing system 安装或升级系统 2. Install system with ...
- Linux系统及lvm知识
一.磁盘分区是怎样表示的 IDE磁盘的设备文件采用/dev/hdx 来命名,分区则采用/dev/hdxy来命名,其中想表示磁盘(a是第一块磁盘,b是第二块磁盘,以此类推),与代表分区的号码(由1开始, ...
- 1、SpringMVC架构
1.SpringMVC架构 1.1 Spring web mvc 介绍 spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中 ...
- gulp的watch记事本
let gulp=require('gulp'), nodemon=require('gulp-nodemon'), browser=require('browser-sync'); let relo ...
- Unraveling the JPEG file
(文章还剩实践部分没写,答辩过后补上...) JPEG文件在当下数字化生活中是无处不在的,但是在熟悉的JPEG面纱背后,隐藏着一些算法,它们去除了人类眼中无法察觉到的细节.这产生了最高的视觉质量与最小 ...
- @Inherited:允许子类继承父类的注解。
在看定义注解的相关文章的时候,看到这个@Inherited注解,简单的说明并没有真正搞懂是什么意思.在网上搜索了一些相关的内容,现在把一篇文章转载过来.以便后面使用. 文章出处,转载地址:(http: ...
- SpringBoot | 第二章:lombok介绍及简单使用
在去北京培训的时候,讲师说到了lombok这个第三方插件包,使用了之后发现,确实是个神奇,避免了编写很多臃肿的且定式的代码,虽然现代的IDE都能通过快捷键或者右键的方式,使用Generate Gett ...
- codesmith 在安装32位Oracle 客户端问题解决
问题解决办法如下: https://blog.csdn.net/csdn1152789046/article/details/52248669