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 趣学笔记(二)的更多相关文章

  1. Ruby 趣学笔记(一)

    Ruby 趣学笔记(一) 本文写于 2020 年 5 月 6 日 Ruby 趣学笔记(一) 变量 变量声明 变量类型 常量 输出 字符串 字符串操作 Array 数组的遍历 数组的连接 怎么判断该变量 ...

  2. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  3. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  4. junit浅学笔记

    JUnit是一个回归测试框架(regression testing framework).Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(Wh ...

  5. Git 笔记二-Git安装与初始配置

    git 笔记二-Git安装与初始配置 Git的安装 由于我日常生活和工作基本上都是在Windows上,因此此处只说windows上的安装.Windows上的安装和其他程序一样,只需要到http://g ...

  6. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...

  7. Go语言学习笔记二: 变量

    Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...

  8. Emacs 笔记二

    Emacs 笔记二 Table of Contents 1. 前言 2. emacs基本操作(常用快捷键) 3. emacs模式讲解 4. emacs缓冲区 5. org mode 5.1. 列表 5 ...

  9. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

随机推荐

  1. 使用conda管理python环境和包

    操作系统:CentOS7使用virtualenv管理python虚拟环境virtualenv是一款轻量级第三方虚拟环境管理工具,不像Anaconda大小达上百M,virtualenv大小只有10M左右 ...

  2. idea推送项目到github

    参考: https://blog.csdn.net/SoWhatWorld/article/details/103817786?depth_1-utm_source=distribute.pc_rel ...

  3. Atomic 的实现原理

    1.直接操作内存,使用Unsafe 这个类 2.使用 getIntVolatile(var1, var2) 获取线程间共享的变量 3.采用CAS的尝试机制(核心所在),代码如下: public fin ...

  4. resion 学习笔记

    resin是一个非常流行的web引用服务器,对servlet和jsp提供了良好的支持,自身采用java开发,支持集群,还支持PHP. resin分为普通版和专业版,主要区别是专业版支持缓存和负载均衡. ...

  5. MySQL优化篇(一),我可以和面试官多聊几句吗?——SQL优化流程与优化数据库对象

    我可以和面试官多聊几句吗?只是想偷点技能过来.MySQL优化篇(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. MyISAM表锁和InnoD ...

  6. PAT B1015德才论

    题目描述: 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不 ...

  7. Mybatis 多表实现多对一查询、添加操作

    Mybatis 多表实现多对一查询.添加操作 学习内容: 1. 多对一之添加操作 1.1.需求 1.2.数据库表(多对一或一对多,数据库外键都是设置在多的一方) 1.3.类设计 1.4.Mapper ...

  8. java生成多级菜单树

    使用java实现一个多级菜单树结构 先上数据库 ps_pid字段很重要,是父级菜单的id Menu类 Menu类要新增一个字段,用来存放子菜单 /** * 子菜单列表 */ private List& ...

  9. Docker入门(windows版),利用Docker创建一个Hello World的web项目

    Docker 当大家点开这篇博客的时候,相信大家对docker多多少少也有些认识了,最近学习docker这门技术,略微有些心得,写篇文章记录一下学习过程并帮大家跳过一些坑. docker的核心有两个, ...

  10.  CPUs Intel 925X/915 Chipset (925X主板芯片组)

    这个是2004年的intel产品的设计(主板,主板芯片组,北桥,南桥),结构也比较清晰,主要想看南桥和北桥的设计. 一些英文解释 ECC是一种能够实现"错误检查和纠正"的技术D92 ...