Skip to content

DandiWong/LearnRuby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

学习编程好榜样

产品狗学编程是一件多么快乐的事情,汪汪汪!

##3.1 注释与分行

注释
# 用于单行注释
=begin & =end 用于多行注释

分行
; 分号代表一个语句的结束,一行中写了多个语句可以用分号来分行,最后一个语句可以省略分号
\ 用于将一行写不完的语句连接下一行(这里跟shell一样),也就是说通过\连接的上下行当做一行看

##3.2 分隔符

常用分隔符主要有:

符号 名称 用途
; 分号 用来分隔一行中的多个语句
() 圆括号 提高优先级;定义方法时容纳参数列表
|空格      |分隔字符;在可省略()的地方代替()

, |逗号 |隔开多个参数 . |点 |将对象与它的方法隔开 :: |紧连俩冒号|域作用符,将模块(类)与它的常量隔开

##3.3 keyword

define module: module
define class: class
define method: def,undef
check type: defined?
条件语句: if,then,else,elsif,case,when,unless
循环语句: for,in,while,until,next,break,do,redo,retry,yield
逻辑判断: not,and,or
逻辑值和空值: true,false,nil——布尔?
异常处理: rescue,ensure
对象引用: super,self
块的起始: begin/end
嵌入模块: BEGIN,END
文件相关: _FILE_,_LINE_
方法返回: return
别名: alias

BEGIN模块相当于C语言中的宏(不懂),END模块用来作一些收尾工作(不懂)。有了require,include,应该取消BEGIN和END的语法定义。——都不懂就是了。

##3.4 运算符

优先级 能否重写 运算符 描述
最高 Y [] []= 数组下标 数组元素赋值
  |Y       |**                 |承冥
  |Y       |! ~ + -            |非 位非 一元加 负号
  |Y       |*  /  %            |乘 除 模
  |Y       |+ -                |加 减
  |Y       |>>  <<             |左移 右移
  |Y       |&                  |位与
  |Y       |^ &#166;           |位异或 位或
  |Y       |<= < > >=          |不大于 小于 大于 不小于
  |Y       |<=> == === =~ != !~|各种相等判断(!= !~不能重写)
  |        |&&                 |短路与
  |        |&#166;&#166;       |短路或
  |        |.. ...             |区间的开始点到结束点
  |        |?:                 |三元条件运算符
  |        |= %= ~= /= -= += &= >>= <<= *= &&= **= &#166;= |各种赋值,例如b+=3意思是b=b+3
  |        |defined?           |检查类型
  |        |not                |逻辑非
  |        |or and             |逻辑或、逻辑与
  |        |if unless while until |判断与循环

最低 | |begin/end |定义方法、类、模块的范围

##3.5 标识名和变量的作用域

  1. 标识名用来指向常量、变量、方法、类和模块;
  2. 标识名的首字符用来帮助我们确定标识所指向内容的作用域;
  3. 一些标识符(上面那些关键字)不能用来当做常量、变量、方法、类或模块的名字;
  4. Ruby标识名区分大小写;
  5. 一个约定用于区别一个名字的用法:名字前面的第一个字符表明这个名字的用法。局部变量方法参数方法名称应该用一个小写字母开头或者一个下划线开头;全局变量用美元符号$作为前缀(跟shell一样);而实例变量用@开头;类变量用@@开头;类名模块名常量应该用大写字母开头。
  6. 词首字母后面可以是字母、数字和下划线的任意组合;@后面不可以直接跟数字。

##3.6 类库

  1. 关键字可以直接使用;
  2. 还有其他常用的应用程序,把它们放在一个专门的根目录下,成为类库(类的仓库)。当前程序试用到类库中某个程序已经定义好的类和方法时,应该是用requireinclude将类库程序名包含在当前程序中;
  3. 从父类继承得到的方法可以直接使用。

##3.7 数据类型 Ruby数据类型有数字字符串数组哈希表区间正则表达式

  1. 数字分为整型、浮点型。浮点型数据小数点后必须跟数字(1.e3不可以,1.1e3可以)。数字可以有前缀:0表示八进制,0x表示十六进制,0b表示二进制(0724,0x5AC4,0b11101)。
  2. 字符串是在''、""之间的代码。
  3. 数组的下标从0开始。Ruby的数组的每个元素可以是不同的类型:[2.4,99,"thank you",[a,b,c],78]。
  4. 区间:1..5表示1,2,3,4,5;1...5表示1,2,3,4。——容易记反。

##3.8 赋值和条件运算符 Ruby的基本赋值用"="来完成。

条件运算符 用于/举例
==(等于)
!=(不等于)
比较两个对象的值是否相等,返回true、false
a=1; b=1.0; a==b #true
eql? 比较两个对象的值、类型是否相等,返回true、false
a=1; b=1.0; a.eql?(b) #false (a为整型,b为浮点型)
equal? 比较两个对象在内存中地址是否相同,返回true、false
a=1.0; b=1.0; a.equal?(b) #false
a=1.0; b=a; a.equal?(b) #true
<=> 比较两个对象的大小,大于、等于、小于分别返回1,0,-1
"aab"<=>"acb" #-1 (第二个a的ASCII码小于c)
[5]<=>[4,9] #1 (第一个元素5>4)

##3.9 条件判断语句 判断条件是否相等用"==",而不是"="(这是赋值?)

###一、单行if(如果)语句

  1. if 条件 then 语句1;语句2;语句... end
  2. (语句1;语句2;语句...) if 条件

###二、多行if语句

    if 条件
        语句1;语句2;语句...
    elsif 条件
        语句1;语句2;语句...
    else
        语句1;语句2;语句...
    end

###三、unless(除非)条件语句

unless 条件 = if not(条件)

###四、case分支条件语句

  case 对象
  when 可能性1
      语句1;语句2;语句...
  when 可能性2
      语句1;语句2;语句...
  when 可能性...
      语句1;语句2;语句...
  else
      语句1;语句2;语句...
  end

##3.10 循环语句

###一、While(当...)循环

while 条件
    语句1;语句2;语句...
end

###二、单行while循环

(语句1;语句2;语句...) while 条件

###三、until(直到...)循环

until 条件 = while not(条件)

见例E3.10-1.rb

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages