Ruby基本语法
| 句法 | |
| require "..." | 从默认位置引用库 |
| require_relative "..." | 从当前位置引用库 |
| 变量 | |
| 本地变量 | 小字母开头或_开头 a, _a |
| 全局变量 | $开头 $a |
| 实例变量 | @开头 相当于其他语言的类变量 在任何一处地方创建整个类里共享 attr_reader attr_writer attr_accessor |
| 类变量 |
@@开头 ● 无法从类外部参照 |
| 常量 |
大字母开头, 如A, TEMP |
| access修饰 | |
| public | |
| private | |
| protected | |
| 方法定义 | def hello(name) ... end 注意: 指定默认值方法如下 |
| 可带标签 | def test(a: 0, b: 0, c: 0) ... end def convert(origin, to: 0) |
| 静态方法 | class << class-name ...(defination) end 上面这个也可以用来加函数到实例里去 或者 def class-name.method(...) ... end 如在类中则可 def self.method(...) |
| 方法改名与删除 | alias undef |
| 类定义 | class ... ... end 注: 类名要常量(首字母大写) 类中常数用class-name::const-name来读取 |
| 类扩张 | 和类定义已将 class ... ... end |
| 类继承 inheritance |
class ... < ... def initialize(value) super(value) end ... end |
| 类的文字输出 | 就是p(自定义的数据结果)时会输出的结果 def inspect() return "..." end |
| 生成类的实例 | Class Sample ... end Sample.new(...) |
| 属性的访问限制 | |
| attr_reader | 从外部可读 类的变量 |
| attr_writer | 从外部可写 类的变量 |
| attr_accessor | 从外部可读写 类的变量 |
| 方法的访问限制 | |
| public | 对外部公开 |
| private | 对外部保密 |
| protected | 只能从自己这个类以及自己的类的实例访问 |
| 模块 | 不能带数据 module ... ... end |
| 模块使用 | include module-name 或 class-name/instance-name.extend(module-name) 静态方法还可以 |
| 查看是否包含模块 | MyThird.include?(SayHello) |
| 查看祖先 | MyThird.ancestors() |
| 查看直接母类 | MyThird.superclass() |
| 三种条件分支 | |
| if ... (then) ... elsif ... (then) ... else ... (then) ... end |
(then)可省略
.... if 条件 式 if 式 右边成立则运行左边 |
| unless ... (then) ... else ... end |
条件不成立时运行unless部分 |
| case a when ... (then) ... when ... (then) ... when ... (then) ... else ... end |
就是其他语言的Switch 注意,多个条件可以用逗号分隔 when 1, 2, 3, .... |
| 6种循环语句 | break next 相当于其他语言的continue redo 基本不用 |
| times | n = 5 n.times do |temp| ... end |
| for | for i in 0..4 ... end |
| while | while ... ... end |
| until | 和while相反 |
| each | range = 1..10 range.each do ... end 增加从0开始的索引 |
| loop | loop do ... end 无限循环,可用来实现其他语言的do {} while(); |
| 异常处理 | begin ... rescue ... ensure ... end begin |
| 类似Swift ??的用法 | a = Integer("abc") rescue 123 |
| 运算符 | |
| 范围 | Range.new(1, 10) |
| 重载 | def +(rhs) ... end |
| 单项运算法重载 | 只可以+, -, ~, ! |
| 代码块 | do |a, b, c, ...| ... end 注: redo返回时候一切回到进入redo的那次循环最开始 |
| 运行代码块 | def ... ... yield ... end |
| 检验是否有代码块 | block_given? |
| 代码块类 | sayHello = Proc.new() do |name| ... end 执行 sayHello.call("WACQY") |
| 有代码块的方法 | def sample(a, b, &method) ... block.call(method) ... end 注: 带入现成代码块要加& |
| 判断 | |
| true false | 不解释 |
| 其他 | false和nil为伪, 其他都为真 |
Ruby基本语法的更多相关文章
- Ruby的语法糖
发现Ruby的语法糖好多,比如函数调用,参数列表可以写括号和不写括号.代码块可以用do end 或者 {}. 还有 if,unless后置.等等. 如果看Ruby代码看多了,你会发现,它很多地方的 ...
- Ruby基本语法规则
1.Ruby常用数据类型 Numbers, Strings, Booleans my_num = 25 my_boollean = true (or false) my_string = " ...
- [ruby on rails] 深入(2) ruby基本语法
1. 调试&注释&打印输出 1.1 调试 ruby属于解释型语言,即脚本,在linux上,脚本的执行无非三种: 1. 用解释器运行脚本 解释器 脚本文件 即:ruby 脚本文件 2. ...
- ruby基础语法
首发:个人博客,更新&纠错&回复 学不同语言,常将它们的基础语法搞混,例如if后面有没有(),后面是then还是:还是{,结尾是end还是}. 这种事情毫无技术含量又毫无乐趣可言,但极 ...
- ruby基本语法(2)
关于数组 Ruby数组中的数据类型可以不相同并且长度也是可变的.(好聪明啊感觉用的久了就会变笨了,除非你本来就是老手)比如下面的例子 Myarray=[1,2,“ruby”] Ruby也支持那种-1的 ...
- ruby基本语法(1)
一些学习资源 http://www.codecademy.com/zh/courses/ruby-beginner-en-d1Ylq/0/5?curriculum_id=5059f8619189a50 ...
- 关于Ruby常用语法案例累积
变量问题: 类变量和方法变量的区别是什么? 类变量:可以直接使用 方法变量:需要实例化后,才能使用该变量 案例一: class Person @@name = "Tom" @@na ...
- 2.ruby基本语法,类的定义
1.在ruby中的定义class,ruby中定义类也是以关键字class开头 后面带着类名,类名以大写开头.一个类的结束以关键字end 结束.如: class Customer end 2.ruby类 ...
- ruby puts语法
str = "Welcom to china" str1 = str puts str + " 1" puts str1 + " 1" de ...
随机推荐
- [转】 nginx rewrite规则
http://www.cnblogs.com/cgli/archive/2011/05/16/2047920.html 最近在VPS上尝试配置安装一个网站,VPS安装了LNMP(Linux+Nginx ...
- 向C#的选项卡中添加自定义窗体
一.自定义窗体的搭建 这个比较简单,添加一个WinForm窗体就行了,设置一个名字EditPanel,然后在窗体上画需要的控件. 二.将自定义窗体添加到选项卡 // 新建窗体加入到选项卡中 EditP ...
- 淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划
body, td { font-family: tahoma; font-size: 10pt; } 淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划 SQL编译解析三部曲分为 ...
- No Memory Alignment with GCC
attribute method: #include <stdio.h> struct packed { char a; int b; } __attribute__((packed)); ...
- java设计模式----迭代器模式和组合模式
迭代器模式: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 设计原则: 单一责任:一个类应该只有一个引起变化的原因 组合模式: 允许你将对象组合成树形结构来表现“整体/部分” ...
- SpringMvc參数的接受以及serializeArray的使用方法
需求:从页面提交一个table中的数据到后台,通经常使用于批量改动 把全部的数据到放到 input属性中,设置name定义成为对象的相关属性,使用Jquery的serializeArray这种方法封装 ...
- Java 内存区域与内存溢出异常
一.Java虚拟机内存划分 1.程序计数器 线程私有 可以看做是当前线程所执行的字节码的行号指示器.字节码解释器工作时是通过改变这个计数器的值来选取下一条需要执行的字节码指令. Java虚拟机是通过多 ...
- ArrayDeque类的使用详解
ArrayDeque是Deque接口的一个实现,使用了可变数组,所以没有容量上的限制. 同时,ArrayDeque是线程不安全的,在没有外部同步的情况下,不能再多线程环境下使用. ArrayDeque ...
- 用Delphi7 调用.NET 2.0的WebService 所要注意的问题(Document格式和UTF8编码)
Delphi7 调用VS.NET 2005开发的基于.NET 2.0的WebService时发生了错误.查阅资料 http://www.community.borland.com/article/bo ...
- IE9不能直接引用Console
问题: 公司有个项目,功能很简单,读取业务数据,展示在页面上. 一个很简单的问题,却因为目标浏览器是IE9,卡了三天. 前端给的反馈是: 在IE9下,程序一会儿对,一会儿不对--第一次刷不出来,多刷几 ...