设为首页 加入收藏

TOP

Ruby入坑指南(一)
2019-08-15 00:10:30 】 浏览:435
Tags:Ruby 指南

1.1 简介

Ruby语言是由松本行弘(Matz)设计,是一门通用的、面向对象的、解释型语言。

1.2 Ruby?RUBY?ruby?

1.Ruby:用来表示编程的语言
2.ruby:是指一个计算机程序,特指Ruby的解释器
3.RUBY:准确来说没有这种写法,一般是简写,例如WTO.

1.3. 安装方式

方式1 brew

brew install ruby

方式2 rvm

rvm install 2.2.4

更多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

load命令总是会加载所请求的文件,不论这个文件是否已经加载过。假如一个文件在几次加载过程中发生改变,那么最新版本的文件将优先使用并覆盖之前加载的版本。尤其是在irb会话中,当在编辑器中修改一个文件时,想要立即测试修改的效果,使用load非常有用。

require

经常会使用的一个技术,用于请求Ruby扩展或库,不论是标准库还是三方库。
requrire就算调用多次也不会重新加载已经加载过的文件。Ruby会持续追踪已经被请求的那些文件而不会重复加载它们。
require不能辨识出当前的工作目录(.)。用户可以显式地指定它。例如:

require "./loadee.rb"
or
$: << "." #把当前目录添加到加载路径当中。
require "loadee.rb"

require_relative

这个命令会搜索相对于所在文件的目录来加载功能。这个不用把当前目录添加到加载路径中。

2.5 数据结构

查看某个属性或者变量是什么类型,可以使用.class方法。

2.5.1 字符串

字符串插值:

name = "zhangsan"
age = "20"
person_desc = "my name is #{name},age is #{age}"
puts person_desc

bang方法:

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
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇02 if语句格式及流程 下一篇python图像处理模块Pillow--Image..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目