Ruby是一门动态的、强类型的、纯面向对象的编程语言。它和Python很是类似,但比Python面向对象更加完全、使用更加灵活、语法更加复杂、也更为有趣。
抛开作事情到底应该有多少种方法这个问题,我相信不止我一我的是为了学习Rails才学习Ruby。每当我拿起Django、Flask或者Python的时候,就会听到有人在说Ruby on Rails。
因而我决定今天开始学习Rails。第一天先来简单学习一下Ruby。编程
首先,由于Ruby的纯面向对象的特征,不存在Java中的“原始数据类型”这种说法。Ruby中内置的几种数据类型也是对象,和其余的对象并没有差异。数组
数值Numeric
app
Int
和浮点Float
。字符串String
less
str.length
而不是len(str)
。==
比较字符串的值,而equal?
比较对象是否相同。符号Symbol
编程语言
:method
,:variable
。布尔Boolean
ide
true
或false
。与Python不一样的是,只有false
和nil
才为假,其他均为真,包括0
、''
、[]
等。数组Array
oop
[1, 'apple', false]
字典Hash
学习
['Jan'=>1, 'Feb'=>2, ...]
idea
类型之间的转换也是面向对象的风格,如str.to_i
,而不是int(str)
。固然to_f
、to_s
之类的也是有的。code
之前我一直以为Objective-C差很少把键盘上的符号都用光了。如今我才知道,和Ruby相比算是小巫见大巫了。
$var
:表示全局变量。如$stdin
。@var
:表示实例变量。@@var
:表示类变量。:var
:表示符号变量。#{var}
:表示在字符串中的占位。如:
name = "world" puts "Hello, #{name}!"
%var
:用于格式化字符串。与Python用法相似。上面的例子能够改写为:
puts "Hello, %s" % name
除此以外,还有一个更奇怪的,虽然没用什么符号,但在Ruby中,首字母大写表示常量。
Ruby中puts
和print
经常使用来输出。
puts
在输出后会自动换行,而print
不会。
在输出字符串时也能够拼接:
a = "Hello, " b = "World!" puts a + b
在Python一般使用逗号,但Ruby中逗号会产生换行。
使用gets
获取用户输入,chomp
用来去除多余的空行。例:
print "What's your name? " name = gets.chomp print "How old are you? " age = gets.chomp.to_i
读写文件的操做与Python大同小异。经常使用的方法有open
、read
、write
、close
等。
判断语句有if
和unless
(if not
)。
Ruby中有三元运算符x ? y : z
,不须要用别扭的y if x else z
。
循环语句有while
、until
(while not
)和loop
(while true
)。
还有传统的for
循环:for x in list
Ruby风格的写法:list.each do |x|
另外一种写法:list.each {|x| ...}
控制循环的关键字有:
break
next
(至关于continue
)redo
重作该次循环retry
重作循环我不知道最后这俩有什么用?
选择语句的例子:
case a when 1..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