Ruby 趣学笔记(二)
Ruby 趣学笔记(二)
本文写于 2020 年 5 月 7 日
类的继承
之前忘记写了,Ruby 的继承写法是:
class IPhone < Phone
def initialize(id, title, price)
super
end
end
即可!
类型转换
Ruby 的类型转换非常方便,只需要.to_i就可以转换为 int 类型;.to_f转换为 float 类型……
哈希变量
rank = {
"徐航宇" => 2800,
"Faker" => 2000,
"Uzi" => 2000
}
puts rank
puts rank["Faker"]
# 类似JSON使用
player = {
name: "Uzi",
age: 25,
rank: 2000
}
puts player
puts player[:name] + ", " + player[:age].to_s + ", " + player[:rank].to_s
作为 JS 开发者,我当然是超级喜欢第二种写法的!
模块
模块的概念类似于类的概念,可以这么理解,但是有出入。
module Base
Version = 'v0.1.1'
def sayVersion
return Version
end
def add(a, b)
return a + b
end
def self.showVersion
return Version
end
module_function :v
end
控制流
Ruby 的控制流和其他的区别不大,首先看看 if:
tall = 180
if tall >= 180
puts "高"
elsif tall <= 170
puts "矮子"
else
puts "不高不矮"
end
Ruby 还有一个叫做 unless 的语句,类似于 if:
PUBG_SteamPrice = 40
unless PUBG_SteamPrice < 50
#大于等于50的时候
puts "《绝地求生》这个游戏虽然好玩,但是价格太贵,还是学习吧。"
else
#小于50的时候
puts "《绝地求生》降价了,剁手买!"
end
这个语句很有意思,我们经常写 JS 或者其他语言的时候,会经常遇到这种情况:
if (!isDown) {
// do something
}
这个时候用 unless 就很舒服:
unless isDown
puts 'do something'
end
Ruby 的 switch 语句和其他的语言不太一样:
注意!实际生产情况,用表编程就可以了,这个例子仅用于展示语法。
case week_day
when 0,7
puts "星期日"
when 1
puts "星期一"
when 2
puts "星期二"
when 3
puts "星期三"
when 4
puts "星期四"
when 5
puts "星期五"
when 6
puts "星期六"
else
raise Exception.new("没这天")
end
数组的遍历
这个和其他的区别不大,就是方法特别多,看看语法就好:
gamelist = ["塞尔达传说", "超级马里奥", "开心剪纸"]
for game in gamelist do
puts game
end
# 循环1-5
for num in 1..5 do
puts num
end
# 循环1-4
for num in 1...5 do
puts num
end
# while循环
index = 0
while index < 5 do
puts "while.index=" + index.to_s
index+=1
end
# do while循环
index = 0
until index == 5 do
puts "until.index=" + index.to_s
index+=1
end
# each循环
gamelist = ["塞尔达传说", "超级马里奥", "开心剪纸"]
gamelist.each { |game|
puts game
}
gamelist.each do |game|
puts game
end
gamelist.each_with_index do |game,i|
puts i.to_s + "." + game
end
# times循环
5.times do |i|
puts "第 #{i+1} 次times循环"
end
# step循环
1.step(10,3) do |i|
puts "#{i}"
end
# upto
2.upto(5) do |i|
puts "updo=" + i.to_s
end
# downto
5.downto(2) do |i|
puts "downto=" + i.to_s
end
错误捕捉
begin
# 有可能发生错误的处理
puts ">处理开始"
# raise "my raise error!"
# 10 / 0
rescue => e
# 错误发生时
puts "X错误发生!"
puts e
else
# 正常处理时
puts "O正常处理"
ensure
# 最后处理,无论是否发生处理(final)
puts "_最后的扫尾处理"
end
(完)
Ruby 趣学笔记(二)的更多相关文章
- Ruby 趣学笔记(一)
Ruby 趣学笔记(一) 本文写于 2020 年 5 月 6 日 Ruby 趣学笔记(一) 变量 变量声明 变量类型 常量 输出 字符串 字符串操作 Array 数组的遍历 数组的连接 怎么判断该变量 ...
- Python 学习笔记二
笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- junit浅学笔记
JUnit是一个回归测试框架(regression testing framework).Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(Wh ...
- Git 笔记二-Git安装与初始配置
git 笔记二-Git安装与初始配置 Git的安装 由于我日常生活和工作基本上都是在Windows上,因此此处只说windows上的安装.Windows上的安装和其他程序一样,只需要到http://g ...
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...
- Go语言学习笔记二: 变量
Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...
- Emacs 笔记二
Emacs 笔记二 Table of Contents 1. 前言 2. emacs基本操作(常用快捷键) 3. emacs模式讲解 4. emacs缓冲区 5. org mode 5.1. 列表 5 ...
- JDBC学习笔记二
JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...
随机推荐
- runnable 和 callable 有什么区别
callable 有返回值,并允许抛出异常 runnable 没有返回值,不会抛出异常
- 编译器如何处理C++不同类中同名函数(参数类型个数都相同)
转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee 作者按: 从这篇文章中,我们主要会认识到一下几点: 一.不类中的特征标相同的同名函数,它们是不同的函数,原因就 ...
- 在VisualStudio调试器中使用内存窗口和查看内存分布
调试模式下内存窗口的使用 在调试期间,"内存"窗口显示应用使用的内存空间.调试器窗口(如"监视"."自动"."局部变量" ...
- JS练习实例--编写经典小游戏俄罗斯方块
最近在学习JavaScript,想编一些实例练练手,之前编了个贪吃蛇,但是实现时没有注意使用面向对象的思想,实现起来也比较简单所以就不总结了,今天就总结下俄罗斯方块小游戏的思路和实现吧(需要下载代码也 ...
- Wepy-小程序踩坑记
引言 用过原生开发的小程序也知道除了api 其他功能性的内容并不多对于需要做大型项目来说是比较难入手的,因此朋友推荐的wepy我就入坑鸟...这么一个跟vue的开发方式类似的框架,不过说起来跟vue类 ...
- Android普通工具类获取Context
在普通工具类中定义一个构造方法,类成员context,用于接收传过来的context 在activity中定义: 将context传过去. 在工具类中也可以使用SharePreferences,get ...
- linux vim编辑器使用
小i 在光标所在行位置停止不动开始写入内容 大I 在光标所在行行首开始写入内容 小a 在光标所在行当前字符后开始写入内容 大A 在光标所在行行尾开始写入内容 小o 在光标所在行下一行开始写入内容 大O ...
- JS 实现下拉框去重
JS 实现下拉框去重 学习内容: 需求 总结: 学习内容: 需求 用 JS 下拉框去重 实现代码 <html> <head> <meta http-equiv=" ...
- 关于json对象的使用小结!
json是前后端数据交互的关键.后端提供的接口中的数据几乎都是通过json来表现的,所以,需要对这个json做一些小结: 这里要推进谷歌的插件Fehelp前端助手,这个可以清楚的看到json的数据: ...
- 百度离线人脸识别sdk的使用
1.1下载sdk运行 百度离线人脸识别sdk的使用 1.2配置环境 添加至项目,可以拖动复制或者以类库形式添加face-resource此文件夹 放到根目录上一层 激活文件与所有dll引用放到根目录嫌 ...