Ruby在语法上是相当的灵活,它让编程人员不局限于一条路子上。
Ruby的语法问题
======================================================
1.方法调用的时候,括号通常是可选的,一下的几个例子都是可行的:
foobar
foobar()
foobar(a, b, c)
foobar a,b,c
2.我们来看一个表达式x y z,是什么意思?它其实相当于
x(y(z))
3.传递hash作为参数给方法,这样可行么:my_method {a => '111', b => '222'}
不可行!如果方法后面跟大括号,则会被认为是block的开始。所以,这里要加上括号:
my_method({a => '111', b => '222'} )
4.如果方法参数只是一个hash,我们甚至可以省略hash外的大括号:
my_method(a => '111', b => '222')
5.再来看这个:
foobar.345
一看看去,会认为是调用对象foobar的名为345的方法,但这明显是错误的,因为方法名是不能以数字开头的。其实,它的真正含义是调用名为foobar的方法,然后传递0.345作为参数。
6.下面的四个表达式一样么?
x = y + z
x = y+z
x = y+ z
x = y +z
乍一看是一样的,但其实只有前三个的功能是相同的,最后一个,它其实是调用方法y,然后传递的参数是+z。
7.下划线_被认为是小写的,所以,一个以下划线开头的变量名,即使是第二个字母是大写的,如_Abc,也不会被
ruby认为是常量。
8.在if和case语句中的then关键字是可选的。同样,在while和until循环语句中的关键子do也是可选的。
9.问号和感叹号可以作为一个方法名的后缀,但是,在单词的其他位置确是不能用的。如completed?是合法的,
而?completed或其他任何位置都是不合法的。
10.正因为问号可以被用作后缀,所以要注意如下的问题:
x = my_flag ? 23 : 45 # OK
x = my_flag? 23 : 45 # Syntax error
11.=end作为内嵌文档的结束标识,它表示该行是内嵌文档的结束,而不是到该标识结束:
=begin
puts "hello"
puts "world"
=end
和
=begin
puts "hello"
=end puts "world"
是一样的效果。
12.BEGIN,END是完全和begin,end不同的
13.如果字符串连接和方法调用在一起,则字符串连接的优先级要高:
str1 = "First " 'second'.center(20)
str2 = ("First " + 'second').center(20)
str3 = "First second".center(20)
这三个的结果是一样的。
需要注意的
=======================================================================
1.ruby中的字符实际上是整数,没有字符这种数据类型:
'ABC'[0].class #Fixnum
x = "Hello"
y = ?A
print "x[0] = #{ x[0]} \n" # Prints: x[0] = 72
print "y = #y\n" # Prints: y = 65
if y == "A" # Prints: no
print "yes\n"
else
print "no\n"
end
2.ruby中其实没有布尔类型,而是用TrueClass和FalseClass来区分,true和false是这两个类的实例。
另外,像c,c++,java中我们所熟悉的++,--操作符号,在ruby中是没有的。
3.ruby中,变量是没有类型的,只有值才是有类型。
4.大多数的ruby操作符其实是方法
5.loop不是关键字,而是一个方法。
6.&&,||和and,or是有差别的,前者的计算结果趋向于一个表达式,而后者则总是false或true:
print (false || "string1\n") # Prints string1
# print (false or "string2\n") # Syntax error!
print (true && "string3\n") # Prints string3
# print (true and "string4\n") # Syntax error!
print (true || "string5\n") # Prints true
# print (true or "string6\n") # Syntax error!
print (false && "string5\n") # Prints false
# print (false or "string6\n") # Syntax error!
and,or的优先级低于&&,||的优先级:
a = true
b = false
c = true
d = true
a1 = a && b or c && d # &&'s are done first
a2 = a && (b or c) && d # or is done first
print a1 # Prints false
print a2 # Prints true
7.赋值操作符的优先级比and,or高:
y = false
z = true
x = y or z # Line 3: =操作比or操作先执行
print x, "\n" # Prints false
(x = y) or z # Line 5: Same as line 3
print x, "\n" # Prints false
x = (y or z) # Line 7: or is done first
print x, "\n" # Prints true
8. 像以下的while和until不是post-test循环,以下两个是不运行的:
puts "looping" while false
puts "still looping" until true
这样才可以:
begin puts "looping" end while false
begin puts "still looping" end until true
分享到:
相关推荐
The Ruby Way(第2版) <br>The Ruby Way assumes that the reader is already familiar with the subject matter. Using many code samples it focuses on "how-to use Ruby" for specific applications, either ...
The Ruby Way 第三版(英文版),全书22章,书中包含600多个按主题分类的示例。每个示例都回答了“如何使用Ruby来完成”的问题。 ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
内含以下4个文档: 1、Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm 2、O'Reilly.Learning.Ruby.May.2007.chm 3、Programming Ruby 2e.pdf 4、ruby中文文档.chm
《The Ruby Way 第二版》...“《The Ruby Way (第2版)中文版》在阐述元编程(metaprogramming)等方面尤其出类拔萃,而元编程是Ruby最引人注目的方面之一。” ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
the ruby way the ruby way
《The Ruby Way 2nd Edition》是一本深入探讨Ruby编程语言的经典著作,旨在帮助读者全面理解和掌握Ruby的精髓。这本书的第二版在2006年出版,由Addison-Wesley出版,作者通过深入浅出的方式,揭示了Ruby语言的强大...
Ruby中机器学习的实用资源
Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,特别适合Web开发。Ruby on Rails(简称Rails)是基于Ruby构建的一个开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,极大地提高了开发效率...
《The Ruby Way》是一本备受推崇的Ruby编程教程,它以独特的方式深入浅出地介绍了Ruby语言。这本书的核心理念是“如何解决问题”,作者通过实际的编程示例和问题解决策略,帮助读者理解Ruby的强大功能和优雅语法。 ...
《Ruby Way》一书还会详细介绍Ruby的Gem包管理器,Gem是Ruby生态系统的核心部分,提供了大量的库和工具,让开发者能够轻松地安装和使用第三方软件包。此外,书中可能涵盖了Ruby on Rails框架,它是基于Ruby构建Web...
"11.5 时间日期the ruby way"这个主题深入探讨了Ruby中处理时间日期的最佳实践和常见用法。让我们逐一了解这些知识点。 首先,`Time.now`是Ruby中获取当前时间的标准方法。它返回一个`Time`对象,表示自1970年1月1...
下面是学习 Ruby 的一些实用建议:首先,了解 Ruby 的基本概念和语法。 Ruby 是一种面向对象的语言,具有简洁的语法和强大的功能。了解变量、数据类型、运算符、控制结构、函数和对象等基本概念。其次,选择合适的...
标题中的“ruby学习一个综合小练习”表明这是一个关于Ruby编程语言的学习资源,可能是通过一个实际的小项目或练习来帮助学习者提升对Ruby的理解。描述中提到的“博文链接”指向了一个特定的博客文章,虽然没有给出...
Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年设计并开发。它强调代码的简洁性和可读性,致力于提供一种更自然的编程方式。Ruby的学习资源丰富多样,包括书籍、在线教程...
标题中的“Python & Ruby 学习”表明了这个压缩包文件包含了与这两种编程语言学习相关的资源。Python 和 Ruby 都是流行的高级编程语言,广泛应用于Web开发、数据分析、自动化脚本等多个领域。以下是对这两个语言的...