Ruby 基本知识
Ruby 安装
在 Mac 电脑上,虽然安装好 Xcode 会自带 Ruby ,不过人们通常还是使用 RVM - Ruby Version Manager 来管理 Ruby 的各种版本
## 安装 RVM - Ruby Version Manager 用来管理 Ruby 的版本
$ \curl -sSL https://get.rvm.io | bash -s stable
$ source ~/.rvm/scripts/rvm ## 安装完 rvm 会提示使用该命令来让 rvm 生效
## 安装所需版本的 Ruby - 以 2.3.1 版本为例
$ rvm install 2.3.1
$ rvm list ## 该命令可查看本地存在的所有 Ruby 的版本
$ rvm use 2.3.1 --default ## 该命令用于设置默认的 Ruby 版本
$ gem update --system ## 用于救回安装 rvm 过程中网络等原因造成的中断失败
$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ #设置新的 gem 的来源网站 IRB - Interactive Ruby Shell
IRB 一般用于测试 Ruby 的语法
安装完某个版本的 Ruby 后,打开 Mac 电脑上的 Terminal.app(终端)输入指令 irb 就可以体验 Ruby 了,有兴趣可到 Try Ruby 感受更多操作
## 进入 Interactive Ruby
$ irb
2.3.1 :001 >计算和赋值
## 在 irb 使用 Ruby 编程 - 计算和赋值
$ irb
2.3.1 :001 > 3+9
=> 12
2.3.1 :002 > 1024/8
=> 128
2.3.1 :003 > my_var=29
=> 29
2.3.1 :004 > my_var=my_var+2
=> 31
2.3.1 :005 > my_var=my_var/2
=> 15
2.3.1 :006 > my_var=my_var/2.0
=> 7.5数组 - Array
2.3.1 :007 > fruits = ["kiwi", "strawberry", "plum"]
=> ["kiwi", "strawberry", "plum"]
2.3.1 :008 > fruits = fruits + ["orange"]
=> ["kiwi", "strawberry", "plum", "orange"]
2.3.1 :009 > fruits = fruits + ["kiwi"]
=> ["kiwi", "strawberry", "plum", "orange", "kiwi"]
2.3.1 :010 > fruits = fruits - ["kiwi"]
=> ["strawberry", "plum", "orange"]PS:可以观察到 Ruby 里数组的特点:后进的排后面;一删删全部等等
## 数组的一些常用操作
> [1,2,3] & [2,3,4] & [0,2,6] ## 多个数组求并集(intersection)
=> [2]类 - Class
Ruby 里常见的类有:Fixnum、String 和 Array 等等,可以通过使用 .class 的方式查看某种数据的类
2.3.1 :011 > 29.class
=> Fixnum
2.3.1 :012 > "Twentynight".class
=> String
2.3.1 :013 > fruits.class
=> Array方法 - Methods
Ruby 里每个类(Class)都包含多种方法(Methods),可用 .[方法] 的方式调用
2.3.1 :014 > fruits
=> ["strawberry", "plum", "orange"]
2.3.1 :015 > fruits.length
=> 3
2.3.1 :016 > fruits.first
=> "strawberry"还可以使用 .methods 的方式查看该类所包含的方法,而由于输出结果的类型属于数组(Array),所以可以进一步使用 .methods.sort 对结果排序
2.3.1 :017 > fruits.methods
=> [:fill, :assoc, :rassoc, ... , :instance_exec, :__id__]
2.3.1 :018 > fruits.methods.sort
=> [:!, :!=, :!~, :&, ... , :values_at, :zip, :|]此外,也可以自行定义方法(Methods)
2.3.1 :019 > def pluralize(word)
2.3.1 :020?> word + "s"
2.3.1 :021?> end
=> :pluralize
2.3.1 :022 > pluralize("apple")
=> "apples"注:
面向对象的语言里所谓的方法(Methods)其实就是函数式语言里的函数(Function)
循环 - Loops
2.3.1 :023 > fruits.each do |fruit|
2.3.1 :024 > puts fruit
2.3.1 :025?> end
strawberry
plum
orange
=> ["strawberry", "plum", "orange"]## 带索引(index)的循环
> fruits.each_with_index do |fruit, index|
> puts fruit
> puts index
> end
strawberry
0
plum
1
orange
2
=> ["strawberry", "plum", "orange"]条件 - Conditional
2.3.1 :027 > if my_var > 1.0
2.3.1 :028?> puts "BigOne"
2.3.1 :029?> end
BigOne
=> nil
2.3.1 :030 > if my_var < 1.0
2.3.1 :031?> puts "OTCBTC"
2.3.1 :032?> end
=> nil退出 IRB
2.3.1 :033 > exit
$打赏