Ruby语言是由松本行弘(Matz)设计,是一门通用的、面向对象的、解释型语言。
1.2 Ruby?RUBY?ruby?1.Ruby:用来表示编程的语言
2.ruby:是指一个计算机程序,特指Ruby的解释器
3.RUBY:准确来说没有这种写法,一般是简写,例如WTO.
更多rvm可以参考:rvm入门篇-安装和使用
1.4 工具1.irb:交互式Ruby控制台程序。
2.rvm: Ruby Version Manager
3.VSCode
4.gem:一套Ruby库和应用程序包管理实用工具
5.rake:Ruby的make工具,一套任务管理实用工具
6.rdoc和ri:Ruby文档工具
1.5 ruby解释器命令执行ruby文件
ruby basic.rb语法检查而不运行程序:
ruby -cw basic.rb它会读取文件并指出语法是否有错。更多类似-cw的解释器开关参见文末:解释器的命令行开关。
2 Ruby语言基础 2.1 变量 局部变量局部变量以小写字母或者下划线开头,包含字母、下划线或数字。Ruby不是使用的驼峰命名,而是使用下划线将多个单词拼接。例如:
✅first_name ❎firstName 实例变量实例变量通常以一个单独的@开头,后面字符和局部变量命名规则一致。例如:
class Person def initialize(temp_name,temp_age) @name = temp_name end def printn return @name end end # 实例变量 p1 = Person.new("zhangsan",24) p p1.printn #输出结果为:zhangsan 类变量类变量命名规则与实例变量一致,但是它以@@符号开头:
class Person @@person_number = 0 def initialize(temp_name,temp_age) @name = temp_name @@person_number = @@person_number + 1 end def print_person_number return @@person_number end end # 实例变量 p1 = Person.new("zhangsan",24) p p1.print_person_number 输出结果:1 全局变量以$开头,它就是一个全局变量,例如:
$FIRST_NAME $population 2.2 常量常量以大写字母开头,如果遇到命名多词组合常量,可以使用驼峰命名法,也可以使用下划线分割且所有字母大写。
A String FirstName FIRST_NAME 2.3 方法 方法名Ruby中的方法名遵从与局部变量相同的规则和约定。例如:
def get_first_name return @first_name end 方法调用方法调用使用.运算符。例如:
p1.get_name #方法调用 p1.name #属性调用 2.4 引用ruby文件可以使用$:查看加载路径。
这里主要介绍三种引用方式:load、require、require_relative。
load命令总是会加载所请求的文件,不论这个文件是否已经加载过。假如一个文件在几次加载过程中发生改变,那么最新版本的文件将优先使用并覆盖之前加载的版本。尤其是在irb会话中,当在编辑器中修改一个文件时,想要立即测试修改的效果,使用load非常有用。
require经常会使用的一个技术,用于请求Ruby扩展或库,不论是标准库还是三方库。
requrire就算调用多次也不会重新加载已经加载过的文件。Ruby会持续追踪已经被请求的那些文件而不会重复加载它们。
require不能辨识出当前的工作目录(.)。用户可以显式地指定它。例如:
这个命令会搜索相对于所在文件的目录来加载功能。这个不用把当前目录添加到加载路径中。
2.5 数据结构查看某个属性或者变量是什么类型,可以使用.class方法。
2.5.1 字符串字符串插值:
name = "zhangsan" age = "20" person_desc = "my name is #{name},age is #{age}" puts person_descbang方法:
Ruby的方法可以以惊叹号(!)结尾,这样的方法称为bang方法。有惊叹号的方法被标记为危险的。因为他可能会改变原有数据的值。例如:
str = "Hello World" p str.upcase! p str #---------------------- p str.upcase p str更多字符串方法参见:https://ruby-doc.org/core-2.2.0/String.html
2.5.2 集合Set不是Ruby的核心类,它是一个标准库类,所以使用的时候需要require "set"。它的对象是唯一的。
构造一个集合:
require 'set' s = [1,2,3,4,5,6,7,8,9,124,45,6,4,1] set = Set.new(s) p set集合没有字面构造器。
2.5.3 数组数组的创建:
#中括号创建 ["zhangsan","lisi","wangwu"]注意%W 和%w的区别:
name = "Tim" students = %W{zhangsan lisi wangwu #{name}} students = %w{zhangsan lisi wangwu #{name}}%w:创建字符串数组的特殊方式
%W:如果想要对字符串进行解析,使用W
数组遍历:
[1,2,3,4,5,8].each {|item| puts item+"!"}更多数组方法参见:https://docs.ruby-lang.org/en/2.0.0/Array.html
2.5.4 散列散列在其他语言中有时被称为:字典或者Map。散列由键值组成。例如:
state_hash = {"January" => "Jan","February" => "Feb","March" => "Mar"} state_hash["April"] = "Apr" puts state_hash["April"] #Result is Apr puts state_hash.class #Result is Hash 2.5.5 符号