[Rails学习之路]初识Ruby(一)

Ruby是一门动态的、强类型的、纯面向对象的编程语言。它和Python很是类似,但比Python面向对象更加完全、使用更加灵活、语法更加复杂、也更为有趣。
抛开作事情到底应该有多少种方法这个问题,我相信不止我一我的是为了学习Rails才学习Ruby。每当我拿起Django、Flask或者Python的时候,就会听到有人在说Ruby on Rails。
因而我决定今天开始学习Rails。第一天先来简单学习一下Ruby。编程

数据类型

首先,由于Ruby的纯面向对象的特征,不存在Java中的“原始数据类型”这种说法。Ruby中内置的几种数据类型也是对象,和其余的对象并没有差异。数组

  • 数值Numericapp

    包括整数Int和浮点Float
  • 字符串Stringless

    • Ruby中的字符串也有单引号、双引号、三引号这三种包裹的方式。
    • Ruby中不存在字符类型。只有长度为1的字符串。
    • 求字符串长度?str.length而不是len(str)
    • 比较字符串的方法和Java近乎相反。==比较字符串的值,而equal?比较对象是否相同。
  • 符号Symbol编程语言

    变量、方法、类均可以表示成符号。如::method:variable
  • 布尔Booleanide

    取值为truefalse。与Python不一样的是,只有falsenil才为假,其他均为真,包括0''[]等。
  • 数组Arrayoop

    [1, 'apple', false]
  • 字典Hash学习

    ['Jan'=>1, 'Feb'=>2, ...]idea

类型之间的转换也是面向对象的风格,如str.to_i,而不是int(str)。固然to_fto_s之类的也是有的。code

奇怪的符号

之前我一直以为Objective-C差很少把键盘上的符号都用光了。如今我才知道,和Ruby相比算是小巫见大巫了。

  • $var:表示全局变量。如$stdin
  • @var:表示实例变量。
  • @@var:表示类变量。
  • :var:表示符号变量。
  • #{var}:表示在字符串中的占位。如:

    name = "world"
    puts "Hello, #{name}!"
  • %var:用于格式化字符串。与Python用法相似。上面的例子能够改写为:

    puts "Hello, %s" % name

除此以外,还有一个更奇怪的,虽然没用什么符号,但在Ruby中,首字母大写表示常量。

输入输出

Ruby中putsprint经常使用来输出。
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大同小异。经常使用的方法有openreadwriteclose等。

判断、循环和选择

判断语句有ifunlessif not)。
Ruby中有三元运算符x ? y : z,不须要用别扭的y if x else z
循环语句有whileuntilwhile not)和loopwhile 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
相关文章
相关标签/搜索