Ruby快速入门
Rb是什么 ?
交互式Ruby(IRB)为实验提供了一个shell。内置IRB shell,你可以立即一行行查看表达式的结果。
该工具自带Ruby安装,所以你必须做一些额外的IRB工作无关。只需键入在命令提示符IRB和交互式Ruby会话将启动.
Ruby语法:
Ruby代码一般忽略空白字符,如空格和制表符,除非当他们出现在字符串.
Ruby的解释分号作为语句的结尾换行符。但是,如果ruby遇到运算符,如+, - ,或在一行的末尾的反斜杠,他们的声明中表示延续.
标识符名称的变量,常量和方法。 Ruby的标识符是大小写敏感。这意味着Ram和RAM是两个不同的标识符在Ruby.
Ruby注释开始与pound/sharp (#)字符,去行结束(EOL).
保留字:
以下列表显示了在Ruby中的保留字。然而,这些保留字不应该被用来作为程序中的常量或变量名,被用来作为方法名称.
BEGIN | do | next | then |
END | else | nill | true |
alias | elsif | not | undef |
and | end | or | unless |
begin | ensure | redo | until |
break | false | rescue | when |
case | for | retry | while |
class | if | return | while |
def | in | self | __FILE__ |
defined? | module | super | __LINE__ |
Ruby定界符文本:
下面是不同的例子:
#!/usr/bin/ruby -w
print <<EOF
This is the first way of creating
her document ie. multiple line string.
EOF
print <<"EOF"; # same as above by www.yiibai.com
This is the second way of creating
her document ie. multiple line string.
EOF
print <<`EOC` # execute commands
echo hi there
echo lo there
EOC
print <<"foo", <<"bar" # you can stack them
I said foo.
foo
I said bar.
bar
Ruby数据类型:
基本类型是数字,字符串,范围,数组和哈希值,.
Ruby中的整数:
123 # Fixnum decimal
1_6889 # Fixnum decimal with underline
-5000 # Negative Fixnum
0377 # octal
0xee # hexadecimal
0b1011011 # binary
?b # character code for 'b'
?\n # code for a newline (0x0a)
12345678901234567890 # Bignum
Ruby中的浮点数:
1023.4 # floating point value
1.0e6 # scientific notation
4E20 # dot not required
4e+20 # sign before exponential
字符串常量:
Ruby字符串简单的8位字节的序列,他们是String类的对象.
- 'VariableName': No interpolation will be done
- "#{VariableName} and Backslashes \n:" Interpolation will be done
- %q(VariableName): No interpolation will be done
- %Q(VariableName and Backslashes \n): Interpolation will be done
- %(VariableName and Backslashes \n): Interpolation will be done
- `echo command interpretation with interpolation and backslashes`
- %x(echo command interpretation with interpolation and backslashes)
反斜线符号:
以下是由Ruby支持反斜线符号列表:
Notation | Character represented |
---|---|
\n | Newline (0x0a) |
\r | Carriage return (0x0d) |
\f | Formfeed (0x0c) |
\b | Backspace (0x08) |
\a | Bell (0x07) |
\e | Escape (0x1b) |
\s | Space (0x20) |
\nnn | Octal notation (n being 0-7) |
\xnn | Hexadecimal notation (n being 0-9, a-f, or A-F) |
\cx, \C-x | Control-x |
\M-x | Meta-x (c | 0x80) |
\M-\C-x | Meta-Control-x |
\x | Character x |
Ruby数组:
创建对象引用方括号内放置一个逗号分隔的一系列Ruby数组的文字。一个被忽略尾随逗号.
例子:
#!/usr/bin/ruby
ary = [ "Ali", 10, 3.14, "This is a string", "last element", ]
ary.each do |i|
puts i
end
这将产生以下结果:
Ali
10
3.14
This is a string
last element
Ruby 哈希:
文字的Ruby创建哈希放在括号之间的键/值对的列表,用逗号或=>之间的键和值序列。一个被忽略尾随逗号.
例子:
#!/usr/bin/ruby
hsh = colors = { "red" => 0xf00, "green" => 0x0f0 }
hsh.each do |key, value|
print key, " is ", value, "\n"
end
这将产生以下结果:
green is 240
red is 3840
Ruby范围:
一个范围代表一个开始和结束值interval.a集。范围可使用.. E和...é文字,或使用Range.new构建.
范围使用......包含从开始运行到结束。那些使用...排除最终价值。作为一个迭代器使用时,范围返回序列中的每个值.
一个范围(1 .. 5)意味着它包括1,2,3,4,5个值和范围(1 ... 5)意味着它包括2,3,4值.
例子:
#!/usr/bin/ruby
(10..15).each do |n|
print n, ' '
end
这将产生以下结果:
10 11 12 13 14 15
变量类型:
$global_variable(全局变量)
@@class_variable(类变量)
@instance_variable
[OtherClass::]CONSTANT
local_variable
Ruby的伪变量:
他们是特殊的变量,局部变量的外观,但像常数。你不能指定任何这些变量的值.
self: The receiver object of the current method.
true: Value representing true.
false: Value representing false.
nil: Value representing undefined.
__FILE__: The name of the current source file.
__LINE__: The current line number in the source file.
Ruby的预定义变量:
下表列出了所有Ruby的预定义变量.
Variable Name | Description |
---|---|
$! | The last exception object raised. The exception object can also be accessed using => in rescue clause. |
$@ | The stack backtrace for the last exception raised. The stack backtrace information can retrieved by Exception#backtrace method of the last exception. |
$/ | The input record separator (newline by default). gets, readline,etc., take their input record separator as optional argument. |
$\ | The output record separator (nil by default). |
$, | The output separator between the arguments to print and Array#join (nil by default). You can specify separator explicitly to Array#join. |
$; | The default separator for split (nil by default). You can specify separator explicitly for String#split. |
$. | The number of the last line read from the current input file. Equivalent to ARGF.lineno. |
$< | Synonym for ARGF. |
$> | Synonym for $defout. |
$0 | The name of the current Ruby program being executed. |
$$ | The process pid of the current Ruby program being executed. |
$? | The exit status of the last process terminated. |
$: | Synonym for $LOAD_PATH. |
$DEBUG | True if the -d or --debug command-line option is specified. |
$defout | The destination output for print and printf ($stdout by default). |
$F | The variable that receives the output from split when -a is specified. This variable is set if the -a command-line option is specified along with the -p or -n option. |
$FILENAME | The name of the file currently being read from ARGF. Equivalent to ARGF.filename. |
$LOAD_PATH | An array holding the directories to be searched when loading files with the load and require methods. |
$SAFE | The security level
|
$stdin | Standard input (STDIN by default). |
$stdout | Standard output (STDOUT by default). |
$stderr | Standard error (STDERR by default). |
$VERBOSE | True if the -v, -w, or --verbose command-line option is specified. |
$- x | The value of interpreter option -x (x=0, a, d, F, i, K, l, p, v). These options are listed below |
$-0 | The value of interpreter option -x and alias of $/. |
$-a | The value of interpreter option -x and true if option -a is set. Read-only. |
$-d | The value of interpreter option -x and alias of $DEBUG |
$-F | The value of interpreter option -x and alias of $;. |
$-i | The value of interpreter option -x and in in-place-edit mode, holds the extension, otherwise nil. Can enable or disable in-place-edit mode. |
$-I | The value of interpreter option -x and alias of $:. |
$-l | The value of interpreter option -x and true if option -lis set. Read-only. |
$-p | The value of interpreter option -x and true if option -pis set. Read-only. |
$_ | The local variable, last string read by gets or readline in the current scope. |
$~ | The local variable, MatchData relating to the last match. Regex#match method returns the last match information. |
$ n ($1, $2, $3...) | The string matched in the nth group of the last pattern match. Equivalent to m[n], where m is a MatchData object. |
$& | The string matched in the last pattern match. Equivalent to m[0], where m is a MatchData object. |
$` | The string preceding the match in the last pattern match. Equivalent to m.pre_match, where m is a MatchData object. |
$' | The string following the match in the last pattern match. Equivalent to m.post_match, where m is a MatchData object. |
$+ | The string corresponding to the last successfully matched group in the last pattern match. |
$+ | The string corresponding to the last successfully matched group in the last pattern match. |
Ruby预定义的常量:
下表列出了所有Ruby的预定义常量.
注: TRUE, FALSE 和 NIL 无是向后兼容的。这是最好用 true, false, and nil.
Constant Name | Description |
---|---|
TRUE | Synonym for true. |
FALSE | Synonym for false. |
NIL | Synonym for nil. |
ARGF | An object providing access to virtual concatenation of files passed as command-line arguments or standard input if there are no command-line arguments. A synonym for $<. |
ARGV | An array containing the command-line arguments passed to the program. A synonym for $*. |
DATA | An input stream for reading the lines of code following the __END__ directive. Not defined if __END__ isn't present in code. |
ENV | A hash-like object containing the program's environment variables. ENV can be handled as a hash. |
RUBY_PLATFORM | A string indicating the platform of the Ruby interpreter. |
RUBY_RELEASE_DATE | A string indicating the release date of the Ruby interpreter |
RUBY_VERSION | A string indicating the version of the Ruby interpreter. |
STDERR | Standard error output stream. Default value of $stderr. |
STDIN | Standard input stream. Default value of $stdin. |
STDOUT | Standard output stream. Default value of $stdout. |
TOPLEVEL_BINDING | A Binding object at Ruby's top level. |
正则表达式:
语法:
/pattern/
/pattern/im # option can be specified
%r!/usr/local! # general delimited regular expression
修饰符:
Modifier | Description |
---|---|
i | Ignore case when matching text. |
o | Perform #{} interpolations only once, the first time the regexp literal is evaluated. |
x | Ignores whitespace and allows comments in regular expressions |
m | Matches multiple lines, recognizing newlines as normal characters |
u,e,s,n | Interpret the regexp as Unicode (UTF-8), EUC, SJIS, or ASCII. If none of these modifiers is specified, the regular expression is assumed to use the source encoding. |
各种模式:
Pattern | Description |
---|---|
^ | Matches beginning of line. |
$ | Matches end of line. |
. | Matches any single character except newline. Using m option allows it to match newline as well. |
[...] | Matches any single character in brackets. |
[^...] | Matches any single character not in brackets |
re* | Matches 0 or more occurrences of preceding expression. |
re+ | Matches 0 or 1 occurrence of preceding expression. |
re{ n} | Matches exactly n number of occurrences of preceding expression. |
re{ n,} | Matches n or more occurrences of preceding expression. |
re{ n, m} | Matches at least n and at most m occurrences of preceding expression. |
a| b | Matches either a or b. |
(re) | Groups regular expressions and remembers matched text. |
(?imx) | Temporarily toggles on i, m, or x options within a regular expression. If in parentheses, only that area is affected. |
(?-imx) | Temporarily toggles off i, m, or x options within a regular expression. If in parentheses, only that area is affected. |
(?: re) | Groups regular expressions without remembering matched text. |
(?imx: re) | Temporarily toggles on i, m, or x options within parentheses. |
(?-imx: re) | Temporarily toggles off i, m, or x options within parentheses. |
(?#...) | Comment. |
(?= re) | Specifies position using a pattern. Doesn't have a range. |
(?! re) | Specifies position using pattern negation. Doesn't have a range. |
(?> re) | Matches independent pattern without backtracking. |
\w | Matches word characters. |
\W | Matches nonword characters. |
\s | Matches whitespace. Equivalent to [\t\n\r\f]. |
\S | Matches nonwhitespace. |
\d | Matches digits. Equivalent to [0-9]. |
\D | Matches nondigits. |
\A | Matches beginning of string. |
\Z | Matches end of string. If a newline exists, it matches just before newline. |
\z | Matches end of string. |
\G | Matches point where last match finished. |
\b | Matches word boundaries when outside brackets. Matches backspace (0x08) when inside brackets. |
\B | Matches nonword boundaries. |
\n, \t, etc. | Matches newlines, carriage returns, tabs, etc. |
\1...\9 | Matches nth grouped subexpression. |
\10 | Matches nth grouped subexpression if it matched already. Otherwise refers to the octal representation of a character code. |
文件I/O:
常见的方法包括::
File.join(p1, p2, ... pN) => "p1/p2/.../pN" 独立于平台路径
File.new(path, modestring="r") => file
File.new(path, modenum [, permnum]) => file
File.open(fileName, aModeString="r") {|file| block} -> nil
File.open(fileName [, aModeNum [, aPermNum ]]) {|file| block} -> nil
IO.foreach(path, sepstring=$/) {|line| block}
IO.readlines(path) => array
这里是一个不同的模式打开一个文件列表:
Modes | Description |
---|---|
r | Read-only mode. The file pointer is placed at the beginning of the file. This is the default mode. |
r+ | Read-write mode. The file pointer will be at the beginning of the file. |
w | Write-only mode. Overwrites the file if the file exists. If the file does not exist, creates a new file for writing. |
w+ | Read-write mode. Overwrites the existing file if the file exists. If the file does not exist, creates a new file for reading and writing. |
a | Write-only mode. The file pointer is at the end of the file if the file exists. That is, the file is in the append mode. If the file does not exist, it creates a new file for writing. |
a+ | Read and write mode. The file pointer is at the end of the file if the file exists. The file opens in the append mode. If the file does not exist, it creates a new file for reading and writing. |
运算符和优先级:
从上到下:
:: .
[]
**
-(unary) +(unary) ! ~
* / %
+ -
<< >>
&
| ^
> >= < <=
<=> == === != =~ !~
&&
||
.. ...
=(+=, -=...)
not
and or
以上都只是除了这些方法:
=, ::, ., .., ..., !, not, &&, and, ||, or, !=, !~
此外,赋值运算符(+=等)用户可定义.
控制表达式:
S.N. | Control Expression |
---|---|
1 |
if bool-expr [then] |
2 |
unless bool-expr [then] |
3 |
expr if bool-expr |
4 |
expr unless bool-expr |
5 |
case target-expr |
6 |
loop do |
7 |
while bool-expr [do] |
8 |
until bool-expr [do] |
9 |
begin |
10 |
begin |
11 |
for name[, name]... in expr [do] |
12 |
expr.each do | name[, name]... | |
13 |
expr while bool-expr |
14 |
expr until bool-expr |
- break 立即终止循环.
- redo 立即重复w/w重新运行条件.
- next 通过循环开始下一次迭代.
- retry 重启循环,重新运行条件.
定义一个类:
类名w/ 资本开始字符.
class Identifier [< superclass ]
expr..
end
Singleton类,一个实例添加方法
class << obj
expr..
end
定义模块:
以下是Ruby中一般来定义一个模块的语法
module Identifier
expr..
end
定义方法:
以下是Ruby中一般来定义一个方法的语法
def method_name(arg_list, *list_expr, &block_expr)
expr..
end
# singleton method
def expr.identifier(arg_list, *list_expr, &block_expr)
expr..
end
- All items of the arg list, including parens, are optional.
- Arguments may have default values (name=expr).
- Method_name may be operators (see above).
- The method definitions can not be nested.
- Methods may override following operators:
- .., |, ^, &, <=>, ==, ===, =~,
- >, >=, <, <=,
- +, -, *, /, %, **, <<, >>,
- ~, +@, -@, [], []= (2 args)
访问限制:
public - 完全访问.
protected - 只能通过访问类和直接后裔的实例。即使是通过一个关系。 (见下文)
private - 只能通过类的实例访问(必须在调用nekkid没有“self”或其他).
例子:
class A
protected
def protected_method
# nothing
end
end
class B < A
public
def test_protected
myA = A.new
myA.protected_method
end
end
b = B.new.test_protected
抛出和挽救异常:
以下是语法:
raise ExceptionClass[, "message"]
begin
expr..
[rescue [error_type [=> var],..]
expr..]..
[else
expr..]
[ensure
expr..]
end
捕捉和抛出异常:
- catch (:label) do ... end
- throw :label jumps back to matching catch and terminates the block.
- + can be external to catch, but has to be reached via calling scope.
- + Hardly ever needed.
异常类:
以下是Exception类的类层次结构:
- Exception
- NoMemoryError
- ScriptError
- LoadError
- NotImplementedError
- SyntaxError
- SignalException
- Interrupt
- StandardError (default for rescue)
- ArgumentError
- IOError
- EOFError
- IndexError
- LocalJumpError
- NameError
- NoMethodError
- RangeError
- FloatDomainError
- RegexpError
- RuntimeError (default for raise)
- SecurityError
- SystemCallError
- Errno::*
- SystemStackError
- ThreadError
- TypeError
- ZeroDivisionError
- SystemExit
- fatal
Ruby命令行选项:
$ ruby [ options ] [.] [ programfile ] [ arguments ... ]
解释器可以调用任何下列选项来控制环境和行为的解释.
Option | Description |
---|---|
-a | Used with -n or -p to split each line. Check -n and -p options. |
-c | Checks syntax only, without executing program. |
-C dir | Changes directory before executing (equivalent to -X). |
-d | Enables debug mode (equivalent to -debug). |
-F pat | Specifies pat as the default separator pattern ($;) used by split. |
-e prog | Specifies prog as the program from the command line. Specify multiple -e options for multiline programs. |
-h | Displays an overview of command-line options. |
-i [ ext] | Overwrites the file contents with program output. The original file is saved with the extension ext. If ext isn't specified, the original file is deleted. |
-I dir | Adds dir as the directory for loading libraries. |
-K [ kcode] | Specifies the multibyte character set code (e or E for EUC (extended Unix code); s or S for SJIS (Shift-JIS); u or U for UTF-8; and a, A, n, or N for ASCII). |
-l | Enables automatic line-end processing. Chops a newline from input lines and appends a newline to output lines. |
-n | Places code within an input loop (as in while gets; ... end). |
-0[ octal] | Sets default record separator ($/) as an octal. Defaults to \0 if octal not specified. |
-p | Places code within an input loop. Writes $_ for each iteration. |
-r lib | Uses require to load lib as a library before executing. |
-s | Interprets any arguments between the program name and filename arguments fitting the pattern -xxx as a switch and defines the corresponding variable. |
-T [level] | Sets the level for tainting checks (1 if level not specified). |
-v | Displays version and enables verbose mode |
-w | Enables verbose mode. If programfile not specified, reads from STDIN. |
-x [dir] | Strips text before #!ruby line. Changes directory to dir before executing ifdir is specified. |
-X dir | Changes directory before executing (equivalent to -C). |
-y | Enables parser debug mode. |
--copyright | Displays copyright notice. |
--debug | Enables debug mode (equivalent to -d). |
--help | Displays an overview of command-line options (equivalent to -h). |
--version | Displays version. |
--verbose | Enables verbose mode (equivalent to -v). Sets $VERBOSE to true |
--yydebug | Enables parser debug mode (equivalent to -y). |
Ruby环境变量:
Ruby解释器使用以下环境变量来控制其行为。在env对象包含了所有当前的环境变量设置列表.
Variable | Description |
---|---|
DLN_LIBRARY_PATH | Search path for dynamically loaded modules. |
HOME | Directory moved to when no argument is passed to Dir::chdir. Also used by File::expand_path to expand "~". |
LOGDIR | Directory moved to when no arguments are passed to Dir::chdir and environment variable HOME isn't set. |
PATH | Search path for executing subprocesses and searching for Ruby programs with the -S option. Separate each path with a colon (semicolon in DOS and Windows). |
RUBYLIB | Search path for libraries. Separate each path with a colon (semicolon in DOS and Windows). |
RUBYLIB_PREFIX | Used to modify the RUBYLIB search path by replacing prefix of library path1 with path2 using the format path1;path2 or path1path2. |
RUBYOPT | Command-line options passed to Ruby interpreter. Ignored in taint mode (Where $SAFE is greater than 0). |
RUBYPATH | With -S option, search path for Ruby programs. Takes precedence over PATH. Ignored in taint mode (where $SAFE is greater than 0). |
RUBYSHELL | Specifies shell for spawned processes. If not set, SHELL or COMSPEC are checked. |
Ruby快速入门的更多相关文章
- 【转】教你Ruby快速入门
转自:http://developer.51cto.com/art/200703/41243.htm 介绍 这是一个短小的Ruby入门,完全读完只需20分钟.这里假设读者已经安装了Ruby,如果你没有 ...
- 【夯实Ruby基础】Ruby快速入门
本文地址: http://www.cnblogs.com/aiweixiao/p/6664301.html 文档提纲 扫描关注微信公众号 1.Ruby安装 1.1)[安装Ruby] Linux/Uni ...
- Java转Ruby【快速入门】
最近参加实习了,公司的技术栈中需要用到 Ruby 以及 Rails 框架,所以算是开始了踩坑之旅吧.. Ruby 简介 网上的简介要搜都能搜到,具体涉及的包括历史啦之类这里不再赘述,提几个关键词吧: ...
- 快速入门系列--MVC--01概述
虽然使用MVC已经不少年,相关技术的学习进行了多次,但是很多技术思路的理解其实都不够深入.其实就在MVC框架中有很多设计模式和设计思路的体现,例如DependencyResolver类就包含我们常见的 ...
- Html与CSS快速入门04-进阶应用
这部分是html细节知识的学习. 快速入门系列--HTML-01简介 快速入门系列--HTML-02基础元素 快速入门系列--HTML-03高级元素和布局 快速入门系列--HTML-04进阶概念 之前 ...
- 转:几十种编程语言的快速入门教程- learnxinyminutes.com
原文来自于:http://top.jobbole.com/15551/ 这家网站的名称是 Learn X in Y minutes,包括了几十种编程语言的快速学习入门教程.打开几种编程语言来看了一下, ...
- Docker快速入门(二)
上篇文章<Docker快速入门(一)>介绍了docker的基本概念和image的相关操作,本篇将进一步介绍image,容器和Dockerfile. 1 image文件 (1)Docker ...
- .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了
作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9985451.html 本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新 ...
- .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
写在前面 上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了 ...
随机推荐
- 使用c++实现一个FTP客户端(一)
之前使用c++实现了一个FTP客户端,在这里做一些记录. 一.需要注意的几点 ①FTP是一种文件传输协议,基于TCP,所以客户端与服务器建立的连接是可靠.安全的,并且要经过三次握手的过程. ②FTP传 ...
- 使用Junit进行Java单元测试
1.新建一个Number类,该类中包含两个函数,求和.求差 2.在eclipse上安装Junit 右键test工程,选择“Properties”→“Java Build Path”→“Librarie ...
- 怎么定位bug
测试发现bug,怎么定位?不同领域不同的测试对象,具体定位方法都不一样.自己定位bug的方法通常是以下过程: 1.发现bug,首先要查看bug的详细信息,根据描述初步分析是哪个模块哪段代码的问题 2. ...
- VirtualBox只能生成32位虚拟机
/************************************************************************* * VirtualBox只能生成32位虚拟机 * ...
- HDU3488Tour (KM算法)
题意: 有N个点,M个单向边,现在要你设计N条路线覆盖所有的点,每个点都属于且值属于一个环.(为什么是N条边:和最小生成树为什么有N-1条边是一样的证明). 解析: 每个点都有一个喜欢对象(出度 ...
- POJ2374 Fence Obstacle Course
题意 Language:Default Fence Obstacle Course Time Limit: 3000MS Memory Limit: 65536K Total Submissions: ...
- CH3401 石头游戏
题意 3401 石头游戏 0x30「数学知识」例题 描述 石头游戏在一个 n 行 m 列 (1≤n,m≤8) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这10个数字指明 ...
- Spring线程池ThreadPoolTaskExecutor配置及详情
Spring线程池ThreadPoolTaskExecutor配置及详情 1. ThreadPoolTaskExecutor配置 <!-- spring thread pool executor ...
- 【转】让开发变得简单一点- Visual Studio 2010几个让人印象深刻的新功能
原文网址:http://xhinker.blog.51cto.com/640011/313055/ 引言 "我们的目标,不仅仅是做出几个新功能,而是要回答一个问题:'如何让现在的开发人员生活 ...
- Flash 开发环境搭建和文字滚动效果实例
Flash 开发环境搭建和文字滚动效果实例 一.Flash 开发环境搭建 Flash发布的时候可以将资源(即将库中的元件)集成到swf运行文件中.Flash没有代码自动输入补全功能,因此需要一个英文一 ...