Ruby是一门动态的、强类型的、纯面向对象的编程语言。它和Python非常相似,但比Python面向对象更加彻底、使用更加灵活、语法更加复杂、也更为有趣。
抛开做事情到底应该有多少种方法这个问题,我相信不止我一个人是为了学习Rails才学习Ruby。每当我拿起Django、Flask或者Python的时候,就会听到有人在说Ruby on Rails。
于是我决定今天开始学习Rails。第一天先来简单学习一下Ruby。
数据类型
首先,因为Ruby的纯面向对象的特征,不存在Java中的“原始数据类型”这种说法。Ruby中内置的几种数据类型也是对象,和其他的对象并无差别。
-
数值Numeric
包括整数Int 和浮点Float 。
-
字符串String
- Ruby中的字符串也有单引号、双引号、三引号这三种包裹的方式。
- Ruby中不存在字符类型。只有长度为1的字符串。
- 求字符串长度?
str.length 而不是len(str) 。
- 比较字符串的方法和Java近乎相反。
== 比较字符串的值,而equal? 比较对象是否相同。
-
符号Symbol
变量、方法、类都可以表示成符号。如::method ,:variable 。
-
布尔Boolean
取值为true 或false 。与Python不同的是,只有false 和nil 才为假,其余均为真,包括0 、'' 、[] 等。
-
数组Array
[1, 'apple', false]
-
字典Hash
['Jan'=>1, 'Feb'=>2, ...]
类型之间的转换也是面向对象的风格,如str.to_i ,而不是int(str) 。当然to_f 、to_s 之类的也是有的。
奇怪的符号
以前我一直觉得Objective-C差不多把键盘上的符号都用光了。现在我才知道,和Ruby相比算是小巫见大巫了。
除此之外,还有一个更奇怪的,虽然没用什么符号,但在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
|
请发表评论