puts 输出,\在ruby里是转义符号
2**(1/4) 指数运算:结果是0 #1与4的商为0,然后2的0次方为1
16**(1/4.0) 结果是2 #1与4.0的商为0.25(四分之一),然后开四次方根
#{ expr } 替换任意 Ruby 表达式的值为一个字符串 功能强大,可以无视内部符号,即使与外部符号冲突也不影响,如"#{a+",a"}"
\n | 换行符 (0x0a) |
\r | 回车符 (0x0d) |
\f | 换页符 (0x0c) |
\b | 退格键 (0x08) |
\a | 报警符 Bell (0x07) |
\e | 转义符 (0x1b) |
\s | 空格符 (0x20) |
\nnn | 八进制表示法 (n 是 0-7) |
\xnn | 十六进制表示法 (n 是 0-9、a-f 或 A-F) |
\cx, \C-x | Control-x |
\M-x | Meta-x (c | 0x80) |
\M-\C-x | Meta-Control-x |
\x | 字符 x |
遍历: object.each do | |
创建对象:class Customer end
Ruby 类中的变量
Ruby 提供了四种类型的变量:
-
- 局部变量:局部变量是在方法中定义的变量。局部变量在方法外是不可用的。在后续的章节中,您将看到有关方法的更多细节。局部变量以小写字母或 _ 开始。(和python的局部变量基本一样)
- 实例变量:实例变量可以跨任何特定的实例或对象中的方法使用。这意味着,实例变量可以从对象到对象的改变。实例变量在变量名之前放置符号(@)。(和python的实例属性基本一样)
- 类变量:类变量可以跨不同的对象使用。类变量属于类,且是类的一个属性。类变量在变量名之前放置符号(@@)。 (和python的类属性基本一样)
- 全局变量:类变量不能跨类使用。如果您想要有一个可以跨类使用的变量,您需要定义全局变量。全局变量总是以美元符号($)开始。(和python的全局变量基本一样)
在 Ruby 中,您可以使用类的方法 new 创建对象
Ruby 类中的成员函数
在 Ruby 中,函数被称为方法。类中的每个方法是以关键字 def 开始,后跟方法名。
方法名总是以小写字母开头。在 Ruby 中,您可以使用关键字 end 来结束一个方法。用end结束一个类。
Ruby 变量
变量是持有可被任何程序使用的任何数据的存储位置。
Ruby 支持五种类型的变量。
- 一般小写字母、下划线开头:变量(Variable)。
$
开头:全局变量(Global variable)。@
开头:实例变量(Instance variable)。@@
开头:类变量(Class variable)类变量被共享在整个继承链中- 大写字母开头:常数(Constant)。常量.
Ruby 点运算符 "." 和双冒号运算符 "::" ::指全局,.指调用类或模块中的方法
MR_COUNT = 0 # 定义在主 Object 类上的常量
module Foo
MR_COUNT = 0 # 局部变量
::MR_COUNT = 1 # 设置全局计数为 1
MR_COUNT = 2 # 设置局部计数为 2
end
puts MR_COUNT # 这是全局常量 结果为1
puts Foo::MR_COUNT # 这是 "Foo" 的局部常量 结果为2
Ruby 伪变量
它们是特殊的变量,有着局部变量的外观,但行为却像常量。您不能给这些变量赋任何值。
- self: 当前方法的接收器对象。
- true: 代表 true 的值。
- false: 代表 false 的值。
- nil: 代表 undefined 的值。
- __FILE__: 当前源文件的名称。
- __LINE__: 当前行在源文件中的编号。
<=> | 联合比较运算符。如果第一个操作数等于第二个操作数则返回 0,如果第一个操作数大于第二个操作数则返回 1,如果第一个操作数小于第二个操作数则返回 -1。 | (a <=> b) 返回 -1。 |
=== | 用于测试 case 语句的 when 子句内的相等。 | (1...10) === 5 返回 true。 |
.eql? | 如果接收器和参数具有相同的类型和相等的值,则返回 true。 (==只匹配值,低级判断,常用) | 1 == 1.0 返回 true,但是 1.eql?(1.0) 返回 false。 |
equal? | 如果接收器和参数具有相同的对象 id,(内存地址,最高层匹配)则返回 true。 | 如果 aObj 是 bObj 的副本,那么 aObj == bObj 返回 true,a.equal?bObj 返回 false,但是 a.equal?aObj 返回 true。 |
三元运算符: ? :
ruby之三元运算符比if更为强大简洁。案例
puts 1 < 2 ? "One is less than two!" : "One is not less than two."
三元运算符:journal_date = journal_issue ? journal_issue.year : nil
等价于
if !journal_issue.nil?
journal_date = journal_issue.yer
end
Ruby 范围运算符
".." 和 "..." 的区别:前者不包含结束点,后者包含结束点
defined? 运算符
defined? object 假如object创建了 返回true,否则返回nil (未定义)
匿名函数:
proc{代码块 } 可以使用call方法调用函数,执行代码
Ruby unless 语句
语法
unless conditional [then] code [else code ] end
unless式和 if式作用相反,即如果 conditional 为假,则执行 code。如果 conditional 为真,则执行 else 子句中指定的 code。
Ruby if...else 语句
语法
if conditional [then] code... [elsif conditional [then] code...]... [else code...] end
if 表达式用于条件执行。值 false 和 nil 为假,其他值都为真。请注意,Ruby 使用 elsif,不是使用 else if 和 elif。
如果 conditional 为真,则执行 code。如果 conditional 不为真,则执行 else 子句中指定的 code。
通常我们省略保留字 then 。若想在一行内写出完整的 if 式,则必须以 then 隔开条件式和程式区块
提示:if 0 在ruby 里是true
Ruby case 语句
语法
case expression [when expression [, expression ...] [then] code ]... [else code ] end
case先对一个 expression 进行匹配判断,然后根据匹配结果进行分支选择。
它使用 ===运算符比较 when 指定的 expression,若一致的话就执行 when 部分的内容。
通常我们省略保留字 then 。若想在一行内写出完整的 when 式,则必须以 then 隔开条件式和程式区块。
当case的"表达式"部分被省略时,将计算第一个when条件部分为真的表达式。
foo = false bar = true quu = false case when foo then puts 'foo is true' when bar then puts 'bar is true' when quu then puts 'quu is true' end # 显示 "bar is true"
Ruby while 语句
语法
while conditional [do] code end
或者
语法
while conditional [:] code end
当 conditional 为真时,执行 code。
语法中 do 或 : 可以省略不写。但若要在一行内写出 while 式,则必须以 do 或 : 隔开条件式或程式区块。
Ruby while 修饰符
语法
code while condition 或者 begin code end while conditional
当 conditional 为真时,执行 code。
如果 while 修饰符跟在一个没有 rescue 或 ensure 子句的 begin 语句后面,code 会在 conditional 判断之前执行一次。
Ruby until 语句
语法
until conditional [do] code end
当 conditional 为假时,执行 code。
语法中 do 可以省略不写。
Ruby for 语句
语法
for variable [, variable ...] in expression [do] code end
先计算表达式得到一个对象,然后针对 expression 中的每个元素分别执行一次 code。
for...in 循环几乎是完全等价于:
(expression).each do |variable[, variable...]| code end
一般多用each do
break 退出循环,next 跳到下一次循环,
next
跳到循环的下一个迭代。如果在块内调用,则终止块的执行(yield 表达式返回 nil)。
redo
重新开始最内部循环的该次迭代,不检查循环条件。如果在块内调用,则重新开始 yield 或 call。
Ruby方法
方法名应以小写字母开头。如果您以大写字母作为方法名的开头,Ruby 可能会把它当作常量,从而导致不正确地解析调用。
方法应在调用之前定义,否则 Ruby 会产生未定义的方法调用异常。
返回值
Ruby 中的每个方法默认都会返回一个值。这个返回的值是最后一个语句的值。
假如有return,如果给出超过两个的表达式,包含这些值的数组将是返回值。如果未给出表达式,nil 将是返回值
参数:
*test 不定长参数,test.leng 变量长度/参数长度
类方法
当方法定义在类的外部,方法默认标记为 private。另一方面,如果方法定义在类中的,则默认标记为 public。
Ruby alias 语句
alias foo bar alias $MATCH $&
在这里,我们已经为 bar 定义了别名为 foo,为 $& 定义了别名为 $MATCH。
这个语句用于为方法或全局变量起别名。别名不能在方法主体内定义。即使方法被重写,方法的别名也保持方法的当前定义。
Ruby undef 语句
这个语句用于取消方法定义。undef 不能出现在方法主体内。
Ruby include 语句
您可以在类中嵌入模块。为了在类中嵌入模块,您可以在类中使用 include 语句
Ruby 中的 Mixins
uby 不直接支持多重继承,但是 Ruby 的模块(Module)有另一个神奇的功能。它几乎消除了多重继承的需要,提供了一种名为 mixin 的装置。
Ruby 没有真正实现多重继承机制,而是采用成为mixin技术作为替代品。将模块include到类定义中,模块中的方法就mix进了类中。
https://www.cnblogs.com/wangbaobao/p/7239597.html ubuntu安装ruby的url