数组是一个Ruby数据类型值的有序集合,它可以是任何类型的对象包括其他数组。
Ruby数组可以与文字符号或创建Array.new
构造函数。
语法
# Array.new constructor variable = Array.new([repeat], [item])
例子
empty_arr = Array.new => [] matzes = Array.new(3, "Matz!") => ["Matz!", "Matz!", "Matz!"]
语法
# Array.new copy constructor variable = Array.new(some_array)
例子
more_matzes = Array.new(matzes) => ["Matz!", "Matz!", "Matz!"]
语法
# Array literal notation variable = [] other_variable = [item1, item2, ..., itemN]
例子
bobbies = ["Bobby!", "Bobby!", "Backend Bobby!"] => ["Bobby!", "Bobby!", "Backend Bobby!"]
阅读更多
http://ruby doc.org/core - 2.0 - / - array.html # method-c-new
您可以遍历一个数组中的元素使用Array.each
一个块。
语法
array.each do |arg| # Do something to each element, referenced as arg end #or array.each { |arg| # Do something to each element, referenced as arg }
例子
["Ryan", "Zach"].each do |person| "#{person} is such a great guy!" end Ryan is such a great guy! Zach is such a great guy!
阅读更多
http://ruby doc.org/core - 2.0 - / - array.html # method-i-each
.flatten
返回一个一维的多维数组。 它不会覆盖新数组的数组。
例子
[[1,2,3], [4,5,6], 7, [[8,9], 10]].flatten => [1,2,3,4,5,6,7,8,9,10]
阅读更多
http://ruby doc.org/core - 2.0 - / - array.html # method-i-flatten
你可以从一个数组删除重复使用Array.uniq
。
例子
[1,1,1,2,3,4,3,3].uniq => [1,2,3,4]
阅读更多
http://ruby doc.org/core - 2.0 - / - array.html # method-i-uniq
一块是一块代码,生活在一个控制语句,循环,方法定义,或者方法调用。 它返回最后一行的值。 在Ruby中,块可以创建两种方法:用括号或做/结束声明。
语法
# Blocks that span only one line usually use the braces form objs.method { |obj| do_something }
例子
[1,2,3,4].each { |number| puts number } 1 2 3 4
语法
# Blocks that span multiple lines usually use the do/end form objs.method do |obj| # do first line # do second line # ... # do nth line end
例子
[1,2,3,4].each do |number| puts "You know what number I love?" puts "I love #{number}!" end You know what number I love? I love 1! You know what number I love? I love 2! You know what number I love? I love 3! You know what number I love? I love 4!
在Ruby中,有两个布尔值:true
和false
。
语法
true => true false => false
逻辑运算符用于布尔值进行比较。 Ruby有6运营商比较布尔值:and
,or
,not
,&&
,||
,not
。and
和&&
,or
和||
,not
和!
有相同的功能,但废话操作符(and
,or
和not
)优先级低于符号运算符(&&
,||
和!
)。
语法
// returns true if both boolean1 and boolean2 are true boolean1 && boolean2 boolean1 and boolean2 // returns true if either boolean1 or boolean2 are true boolean1 || boolean2 boolean1 or boolean2 // returns the opposite of boolean !boolean not boolean
例子
true && true => true true && false => false false and true => false false and false => false true || true => true true || false => true false or true => true false or false => false !true => false not false => true
阅读更多
表% 5 f18.4 http://phrogz.net/ProgrammingRuby/language.html
比较运算符用于测试两个对象之间的关系。 平等(==
和不平等!=
)操作符可以用于几乎任何类型的值,其他运营商用于数值比较。
语法
x == y // returns true if two things are equal x != y // returns true if two things are not equal x <= y // returns true if x is less than or equal to y x >= y // returns true if x is greater than or equal to y x < y // returns true if x is less than y x > y // returns true if x is greater than y
例子
5 == 5 => true 5 != 5 => false 2 <= 2 => true 2 >= 3 => false 1 < 2 => true 1 > 2 => false
将人类可读的评论添加到您的程序是一个好主意来帮助别人阅读你的代码理解。 但是在Ruby中,通常不写很多评论,因为语言是人类可读的了。 通常很容易迅速了解一块美味的Ruby代码。
单行注释非常适合快速笔记,提醒,或者琐碎的信息共享。
语法
# comment text
例子
# This is a single line comment.
你可以跨越多行评论,虽然Ruby程序员很少使用这个。 他们做笔记时是有用的文档。
语法
=begin comment line comment line =end
例子
=begin This is a comment that spans multiple lines. =end
散列键-值对的集合。 像数组一样,他们有值相关的指标,但在散列的情况下,指数被称为“键。 hashable”键可以是任何东西,如整数,字符串,或符号,但他们所属散列必须是唯一的。 键引用的值可以是任何Ruby对象。
有几种方法可以在Ruby创建散列。 最常见的两个新的构造函数方法及其文字符号。 它也被认为是一个最佳实践使用符号作为键。 以下是有效的在所有版本的Ruby。
语法
# Hash.new constructor my_hash = Hash.new([default_value])
例子
empty_hash = Hash.new => {} my_hash = Hash.new("The Default") my_hash["random_key"] => "The Default"
语法
# Hash literal notation my_hash = { "key1" => value1, :key2 => value2, 3 => value 3 }
例子
my_hash = { :a => "Artur", :l => "Linda", :r => "Ryan", :z => "Zach" } => {:a => "Artur", :l => "Linda", :r => "Ryan", :z => "Zach"}
Ruby 1.9,现在有一个速记方法,写作更容易写的哈希表。 而不是指定符号然后使用散列火箭定义键值对,你现在可以把后跟一个冒号,那么价值的关键。 钥匙被翻译成符号。
语法
my_hash = { key1: value1, key2: value2 }
例子
my_hash = { name: "Artur", age: 21 } => { :name => "Artur", :age => 21 }
Ruby包括一个if语句,可以用来管理程序的控制流。 声明需要一个布尔表达式和执行某些代码只有布尔表达式的求值结果为true。
语法
if boolean_expression #do something here end
例子
if true puts "I get printed!" end I get printed!
这是一个if语句的对立面。 声明需要一个布尔表达式和执行某些代码只有布尔表达式的求值结果为false。
语法
unless boolean_expression #do something here end
例子
unless false puts "I get printed!" end I get printed!
一个条件语句用于管理程序的控制流。 声明必须搭配if或除非块和一个布尔表达式。 它运行一些代码只有在前面的条件语句不运行及其布尔表达式计算为true。 它相当于编写一个else语句有一个if语句块。
语法
if boolean_expression #do something elsif boolean_expression_2 #do something different else #do something else
例子
x = 5 if x > 5 print "I am big!" elsif x == 5 print "I am medium!" else print "I am small!" end I am medium!
一个条件语句用于管理程序的控制流。 声明必须搭配if或除非块和不接受参数。 它运行一些代码只有在前面的条件语句不运行。
语法
if boolean_expression #do something else #do something else end
例子
x = 5 if x > 5 print "I am big!" else print "I am small!" end I am small!
Ruby包含一个while循环,将执行一块代码,只要其条件为真。 当条件为假时,循环结束后的代码将被执行。
语法
while condition_is_true # do something end
例子
i = 1 while i < 5 puts "#{i} is less than 5!" i += 1 end puts "Done!" 1 is less than 5! 2 is less than 5! 3 is less than 5! 4 is less than 5! Done!
Ruby包含一个直到循环,将执行一块代码,只要其条件是错误的。 条件变为真时,循环结束后的代码将被执行。
语法
until condition_is_false # do something end
例子
counter = 3 until counter <= 0 puts counter counter -= 1 end puts "Blast off!" 3 2 1 Blast off!
使用for循环遍历一个对象。 Ruby。 每个方法是首选的for循环,因为for循环不为对象而创建一个新的空间。 每个方法。 Ruby中的for循环是罕见的。
语法
for iterator in iterable_object # do something end
例子
for number in (0..5) puts number end 0 1 2 3 4 5
例子
my_array = ["Matz", "chunky", "bacon"] for item in my_array puts item end Matz chunky bacon
典型的加、减、乘、除、乘方所有存在于Ruby和看起来非常类似于代数典型的用例。 请注意,订单的操作。
语法
x + y #addition x - y #subtraction x * y #multiplication x / y #division x ** y #exponentiation
例子
40 + 2 => 42 100 - 17 => 83 9 * 10 => 90 9 / 3 => 3 2**3 => 8
部门是一个棘手的情况。 如果你把两个整数,结果将一个整数无论剩余(有关更多信息,请参见下面的模量)。 但是,如果你把一个整数和浮点数或者两个浮点数,结果将占其余。
例子
10 / 3 => 3 10.0 / 3 => 3.33333333333333 10 / 3.0 => 3.33333333333333 10.0 / 3.0 => 3.33333333333333
如果你想做整数除法和检索商和余数在一个电话,然后你想用divmod。 您可以使用divmod数值类型,它将返回一个数组商和余数,分别。
语法
a.divmod(b)
例子
10.divmod(3) => [3, 1]
如果你想从整数划分问题,其余的你可以使用模数运算符来检索值。
语法
x % y
例子
10 % 3 => 1
返回整数小于或等于最大的一个数字。
语法
expression.floor
例子
9.99.floor => 9 (1 + 0.5).floor => 1
返回最小的整数大于或等于一个数字。
语法
expression.ceil
例子
45.4.ceil => 46 (4 - 1.9).ceil => 3
返回一个圆的周长的比值,其直径大约3.14159或更好的条件,圆周率(π)。 注意语法,我们不放()
结束的时候Math::PI
因为Math::PI
不是一个函数,而是一个常数。
语法
Math::PI => 3.14159265358979
返回一个数的平方根。
语法
Math.sqrt(expression)
例子
Math.sqrt(100) => 10.0 Math.sqrt(5+4) => 3.0 Math.sqrt(Math.sqrt(122+22) + Math.sqrt(16)) => 4.0
一个Ruby方法用于创建参数化、可重用的代码。 Ruby方法可以创建使用的语法:
语法
def method_name(arguments) # Code to be executed end
例子
def sum(x,y) x + y end sum(13, 379) => 392
把(简称“字符串”)和打印命令都是用来显示的结果评估Ruby代码。 它们之间的主要区别是,将添加一个换行符执行后,和打印没有。
语法
print some_string puts some_string
例子
3.times { print "Hello!" } Hello!Hello!Hello! 3.times { puts "Hello!" } Hello! Hello! Hello!
字符串是用于存储和操纵文本在Ruby中。 字符串引号之间的书面。 这两个单引号(')和双(")支持报价,但单个字符串的引号两端必须匹配(没有“弦”或“字符串”)!
语法
single_quotes = 'some text goes here' double_quotes = "some text goes here"
例子
my_name = "Eric" that_computer = "Eric's Computer" #this syntax is allowed
就像一个大的if / else if / else链。 检查一个值对列表的情况下,执行第一个病例,是真的。 如果没有找到匹配,它尝试默认情况下指定一个else语句。 如果没有一个默认的情况下,那么它声明退出。 不同语言,像JavaScript,Ruby switch语句没有落空,自动分解。 相反,可以逗号分隔的情况下。
语法
case value when expression1 #do something when expression2 #do something ... when expressionN #do something else #do default case end
例子
a = ["4"] case a when 1..4, 5 puts "It's between 1 and 5" when 6 puts "It's 6" when String puts "You passed a string" else puts "You gave me #{a} -- I have no idea what to do with that." end => You gave me 4 -- I have no idea what to do with that.
在Ruby中,只是一个象征的名字在你的程序中使用。 Ruby符号的主要用途之一是散列键,尤其是如果你会使用相同的字符串作为散列键。 Ruby将创建一个(几乎)无限数量的你所有的散列键字符串实例,但只会保持一份象征在内存中。 这真的可以节省内存的程序。
语法
:symbol
例子
fox1 = :fox fox2 = :fox fox1.object_id => 430488 fox2.object_id => 430488
这是一个简单的速记声明如果…… else语句。 这是一个有用的工具在你有一个非常简单的情况下,如果…… else语句,你要赋值给一个变量。
语法
boolean_expression ? true_expression : false_expression
例子
grade = 88 status = grade >= 70 ? "pass" : "fail" => pass
。 每个Ruby中的是一个建在迭代器函数。 遍历列表中的每一项,散列或其他iterable对象允许您执行操作价值。 的块。 每条语句创建一个新的范围的变量,这样你就不会不小心修改原始值。
语法
iterable_obj.each do |value_of_item| # do something end
例子
one_to_ten = (1..10).to_a one_to_ten.each do |num| print (num**2).to_s + " " end 1 4 9 16 25 36 49 64 81 100
。 次用Ruby是一个建在迭代器函数。 它执行一个动作的次数。
语法
num_of_times.times do # do something end
例子
3.times do puts "I'm in the loop!" end puts "I'm out the loop!"
使用=操作符变量分配值,这不是与= =符号混淆用于测试平等。 几乎任何类型的一个变量可以保存价值包括数字、字符串、数组和散列。
语法
variable_name = value
例子
name = "Artur" => "Artur" name_copy = name => "Artur" age = 21 => 21
语法
variable_name = new_value
例子
name => "Artur" name_copy => "Artur" age => 21 name = "Dustin" => "Dustin" name_copy => "Artur" name_copy = name => "Dustin" age = 22 => 22