Ruby编程语言_Chapter02_笔记
来源:互联网 发布:阿里云 搭建ss 编辑:程序博客网 时间:2024/05/29 02:28
第二章 Ruby程序的结构和运行
Ruby的注释以#开头,并持续到该行结束。Ruby没有/*...*/的C风格注释。
如果#出现在字符串或者正则表达式的字面量里,则它是字符串或者正则表达式的一部分,而不是注释。
Ruby支持嵌入式注释,以=begin开头,以=end结尾。=begin和需要注释的内容之间至少要有一个空格作为分界符。=end也是如此,而且=end所在行,整行都是被注释掉的。=必须作为该行的第一个字符出现,前面连空格或制表符都不可以有。
文档化的注释
字面量 就是直接出现在Ruby源代码中的值,包括数字、字符串、正则表达式、数组、哈希值等。
标识符 即名字。Ruby用标识符对变量、类、方法等命名。
1)可以有字母、数字、下划线组成,但不能以数字开头。
2)以大写字母开头的标识符是常量。如果修改类似的标识符,会发出警告,但不是错误。
3)类和模块名必须以大写开头,否则报错。
4)非常量多字节标识符,以下划线分割,而不是java下通常的“驼峰命名”。Ruby是大小写敏感的。
ASCII字符集下,Ruby规定了哪些字符是有效的,哪些是无效的。ASCII字符集之外的所有字符都是Ruby标识符的有效字符。比如UTF-8中的乘号“×”。
标识符里的标点符号
1)$ 开头的变量是全局变量;
2)@ 开头的变量是实例变量;
3)@@ 开头的变量是类变量;
4)? 返回布尔值的方法的名字通常以问号结尾;
5)! 结尾的方法名,表明此方法会改变调用它的对象本身;
6)= 如果方法名以=结尾,则调用此方法时,可以省略此等号,这种方法通常被置于赋值操作符的左侧。保留字
__LINE__caseensurenotthen__ENCODING__classfalseortrue__FILE__defforredoundefBEGINdefined?ifrescueunlessENDdoinretryuntilaliaselsemodulereturnwhenandelseifnextselfwhilebeginendnilsuperyieldbreak =begin=end__END__如果__END__单独出现在一行(没有前置或后置空白),则标示程序结束,即数据区的开始。
可以通过在保留字前加上@、@@、$,从而当做实例变量、类变量、全局变量来使用。此外还可以将关键字作为方法名,但这种方法名不能单独出现在程序中,必须通过一个对象显示的来调用。
Ruby的许多特性实际上是用Kernel、Module、Class和Object这几个类的方法来实现的。建议将以下标识符当做保留字来处理。
1) 这些方法通常用于声明或者关键字 at_exitcatchprivaterequireattrincludeprocthrowattr_accessorlambdaprotected attr_readerloadpublic attr_writerloopraise
2) 这些方法通常用于全局方法 Arraychomp!gsub!selectFloatchopiterator?sleepIntegerchop!loadsplitStringevalopensprintfURIexecpsrandabortexitprintsubautoloadexit!printfsub!autoload!failputcsyscallbindingforkputssystemblock_given?formatrandtestcallccgetcreadlinetrapcallergetsreadlineswarnchompgsubscan
3)这些方法通常用于对象方法 allocatefreezekind_of?superclassclonefrozen?methodtaintdisplayhashmethodstainted?dupidnewto_aenum_forinheritednil?to_enumeql?inspectobject_idto_sequal?instance_of?respond_to?untaintextendis_a?send空白符
1)Ruby中可以使用分号来结束语句,但通常都被省略。如果省略,则换行符被视为语句的终结。
2)如果语句分布在多行,则应注意换行符的位置。total = x + y total = x+ y
3)以下情形不必担心换行符所引起的歧义。在操作符之后;在方法调用的句点之后;在数组或哈希表字面量里的分隔元素的逗号之后。
4)可以在换行符之前加上“\”进行转义,避免终结语句。
5)在Ruby1.9中,如果一行代码的第一个非空白字符是“.”,则该行被认为是上一行的延续。这种风格很符合链式调用。
6)Ruby允许省略方法调用中的括号,但应注意方法名和参数之间的空格。f(3+2)+1# equals to f(5) + 1f (3+2)+1# equals to f(6)
因此不要在方法名和左括号之间留白;如果参数是以圆括号开头,则整个方法调用一直要使用圆括号;最好一直使用Ruby解释器的-w选项。块(block)是一段与迭代器相关的代码,以花括号或者do、end来分隔。(块的代码多于一行的时候,使用do、end来分隔)
3.times {print "Ruby! "} 3.times do |x| print xend
体(Body)是一个语句列表,如类定义体,方法体循环体等。体从不使用花括号分隔,而只使用关键字。
文件结构
1)如果含有“shebang”注释,则该注释必须出现在文件首行;
2)如果含有“coding”注释,则应该出现在“shebang”下面一行;如果没有“shebang”,则应出现在首行;
3)如果文件包含一行代码,且该行代码只包含__END__标记,且标记前后均无空白符,则Ruby解释器将停止对该文件的处理。文件余下部分可以包含任何数据,而且程序可以通过IO流对象DATA对其进行读取。Ruby支持Unicode等其他字符集编码;1.8中需要-Ku选项,1.9中只需在文件开头加上以下注释(此注释必须用ASCII字符编写):
# coding: utf-8
1)coding后必须接一个冒号或等号,然后再接字符编码名称,该名称不能包含空格,也不能包含下划线和连字符以外的标点符号;
2)冒号和等号两边可以存在空格,字符串coding前面还可以包含任意前缀;
3)整个注释不区分大小写。如果使用UTF-8,在Windows下最好保存的时候,选择无BOM方式。
在Windows的命令行中,要正确显示UTF-8输出,应该执行命令“chcp 65001”,并将字体改为“Lucida Console”。
JRuby 1.6.x默认情况下是和Ruby1.8兼容的,如果想要和1.9兼容,需要设置系统变量“JRUBY_OPTS=--1.9”。
通常情况下(除非调用了exit!方法),Ruby会在退出之前执行所有的END语句,以及任何用at_exit函数注册过的“关闭钩子”代码。
- Ruby编程语言_Chapter02_笔记
- Ruby编程语言_Chapter01_笔记
- 【编程语言】【Ruby】语言介绍
- 《Ruby 元编程》笔记
- Ruby:编程语言中的精华
- Ruby编程语言(读书笔记)
- Ruby元编程笔记一
- Ruby元编程笔记<一>
- Ruby元编程笔记<二>
- 也看编程语言ruby的前途
- Ruby高手点评Scala编程语言
- 编程语言Rubyの基础入门
- 高薪水编程语言ruby的优点
- ruby语言学习笔记(一)
- Ruby元编程-学习笔记(二)-方法
- Ruby元编程-学习笔记(二)-方法
- GC的三种方式,读RUBY之父写的《编程语言的过去、现在和未来》笔记
- GC的三种方式,读RUBY之父写的《编程语言的过去、现在和未来》笔记
- 杭电 1856 并查集路径压缩+按秩合并
- 关于Foxit Phantom 2.0 Suite 的问题
- ICMP重定向
- 利用JavaMail通过POP3协议、IMAP协议收取Gmail邮箱
- php伪静态介绍
- Ruby编程语言_Chapter02_笔记
- 上传图片
- C语言函数参数调用顺序
- Oracle GoldenGate Veridata Installation and Configuration
- Python3之"IndentationError: unexpected indent"错误
- handler/ runOnUiThread /AsyncTask
- php的类
- 基于字符设备的IIC驱动源代码
- Installing and Configuring GoldenGate Veridata Agent