Ruby自学笔记

  • 格式:pdf
  • 大小:729.12 KB
  • 文档页数:23
2、在 windows 中的 dos 窗口中: ①ruby -v #查看 ruby 版本号 ②ruby -ewc 'print "Hello,World!\n"' # -e(excute) 表示将后面的一行语句作为 ruby 脚本来执行。 # -w(warning) 若了错给出警告信息, -c(check) 对语句进行语法检查。 ③copy con hello.rb print "Hello,World!\n" puts "3*9=",3*9 printf("string:%s,Float:%2.2f\n","中华",3.4) #=> string:中华,Float:3.40 puts("%s %d %f"%["中国",30,3.45]); #=> 中国 30 3.450000 #等价于 printf("%s %d %f\n","中国",30,3.45) ^z #按下 Ctrl+Z 组合键结束输入 ruby –wc hello.rb #执行 ruby 脚本命令 ④ruby 字符串格式化和进制转换 "%05d" % 123 #结果是 "00123" "%02X" % 10 #结果是 "0A" "%03x" % 10 #结果是 "00a" "%010x" % 10 #结果是 "000000000a" (前缀 9 个 0) "%10x" %10 #结果是 " a" (前缀 9 个空格) ⑤ruby 利用 Fixnum 的 upto 和 downto 方法来遍历数组 arr = "1,2,3".split(',') arr.map! do | item | item = item.to_i end #一般可以用 map!方法来改变原数组内容 0.upto(arr.length-1) do | idx | arr[idx] = arr[idx].to_s end #再将数组内容改回字符串形式,使用 upto 方法。 fixnum 对象的 upto 和 downto 方法,可以很方便的作为访问一个数组的索引。 其实也可以这样做: (0..arr.length-1).each{ | n | arr[n] = arr[n].to_i }
Ruby 自学知识点集锦( JackLau 整理)
1
Ruby 的相关知识点
ruby 是纯面向对象的语言。 具有:封装、继承、多态三大特性。 类名必须以大写字母开始,即:类名要是个常量。 ruby 的整体风格特征: (1) ruby 是基于行的语言。 一般遇到换行就意味着语句的结束。 ruby 可以用分号(;)来区分一行中多条语句。 在行尾加一个反斜杠(\)表示要延续到下一行。 行最后一个字符是操作符(如+、-、*、/、%)或逗号(,)解析器则会继续阅读到下一行结尾。 (2) ruby 中没有主程序,代码总是从上往下执行。比较复杂的程序中,通常一开始会引用其他的程序 块,然后是各种类,模块的定义,最后是执行主要操作代码。 (3) 分界符:所有不是字母或者数字的"单字节"字符都可以成为 String 的分界符。 注意,通常他们都是成对出现的,比如<和>,!和!,{和}等。 (4) 构造字符串字面量( “小单大双” ) %q 单引号字符串(不解释嵌套表达式#{ ... }) eg: %q(string test #{Time.now}) "string test \#{Time.now}" %Q, % 双引号字符串(解释嵌套表达式#{ ... }) eg: %(string test #{Time.now}) "string test 2015-04-26 12:49:21 +0800" %w(单引号), %W(双引号) 字符串数组(技巧口诀:小单 大双 ) %r 正则表达式模式 eg: %r(/home/#{foo}) /\/home\/Foo/ %x Shell 命令 eg: %x(echo foo:#{foo}) "foo:Foo" %i 符号 symbol 数组 eg: %i(one two three) [:one, :two, :three] %s 表示 symbol eg: %s(foo) :foo 字符串的表示方法: ①最简单的使用单引号(' ')或者双引号(" ")括起来的字符串,比如'hello'或"hello"。 ②使用分界符(所有不是字母或者数字的"单字节"字符都可以成为 String 的分界符。 如:[…] 、 ! 、<...>、 {…} )表示字符串: %q 代表单引号: str=%q!hello! #=> 'hello' %Q 或 % 代表双引号: str=%Q{hello} #=> "hello" str=%(hello!) #=> "hello" ③here document 构建字符串,该方法比较适合用于多行字符串的创建。 由<< 和 边界字符串作为开头,由边界字符串作为结尾,比如下列代码: str = <<END_OF_STRING1 We are here now, where are you? END_OF_STRING1 较为复杂的是允许多个边界字符串对出现。 str = <<END_OF_STRING1 <<END_OF_STRING2 We are here now, where are you? END_OF_STRING1 I will leave now, would you like to go with me? END_OF_STRING2
第 2 页 共 23 页ห้องสมุดไป่ตู้
Ruby 自学知识点集锦( JackLau 整理)
3
⑧对类中常量的调用一般不用"."符号(对象与它的方法隔开),而用"::"(作用域符,将模块或类或函 数与它的常量隔开)。比如:Math::PI ; ⑨Ruby 字符串连接用 concat 效率更高 (在 rails 的 view 中, concat 相当于输出表达式即: <%= … %>) 。 ⑩puts, p, print 的区别: puts 输出内容后,会自动换行(如果内容参数为空,则仅输出一个换行符号); 如果内容参数中有转义符,输出时将先处理转义再输出。输出字符串时,会用双引号("")把字符串内 容框住一起显示出来,特殊字符原样显示。 p 基本与 puts 相同, 但不会处理参数中的转义符号, 一般用于显示原始数据, 供开发人员进行调用。 注意:输出双字节的字符,比如全角英文或汉字时会输出对应的二个字节对应的数字,而非字符。 print 基本与 puts 相同,但输出内容后,不会自动在结尾加上换行符。 ⑪gets:它从你的程序的标准输入流中返回一行。一般用来从键盘或文件读入一行数据。
第 1 页 共 23 页
Ruby 自学知识点集锦( JackLau 整理)
2
(5)查看本地 RubyGems 已安装列表 gem list [ --local ] (6)Ruby 每次的修改字符串操作都会修改自身。 (7)给某一变量赋初始值 ①变量 num 若转换不成功则赋予默认值 0 num = Integer(var) rescue 0 ②赋默认值 var = false num = var || "默认值" num ||= "默认值" ③判断对象是否真的存在时使用逻辑与 ary=[1,2,3] item=ary && ary[0] (8)检测某个类中是否有方法及调用方法 t=TestClass.new t.show_info if t.respond_to?("show_info") #respond_to?这个方法,就可以实现判断对象能否响应给定的消息 t.send("show_info") if t.respond_to?("show_info") #send 方法和点操作符一样,用来给对象发送消息 t.method t.send(method) (9)数组转换为 Hash arr=%w(a b c d) #数组必须为偶数个元素 p arr #=> ["a", "b", "c", "d"] h=Hash[*arr] p h #=> {"c"=>"d", "a"=>"b"} (10)Ruby 中的方法若有感叹号(!)出现, 经过操作会改变原来对象的值, 相反会建立新对象进行返回。
基 本 语 法
1、单行注释与多行(块)注释 ①单行注释 #注释内容 ②多行注释(内嵌文档 Rdoc 注释,类似 javadoc) =begin 注释内容 =end 注意:=begin 前不要有任何内容(包括空格)。 ③Ruby 中用分号(;)来表示一个语句的结束,一行可以有多个语句,每个语句用分号(;)隔开,最后一 句可以省略分号。 ④换行符表示一行结束,若语句太长可以用反斜线(\)连接下一行。 ⑤在双引号("")里的字符串可以进行公式展开,用单引号('')括起来的字符串则不支持公式展开(公 式展开是指在字符串中括在#{ ... }中的字符(串)会被作为 Ruby 的公式来解释,在类中的实例变量、 类变量、全局变量可以将花括弧({ })省略,即 #@instance_var、#@@class_name、#$global_name )。 ⑥Ruby 内置的数值类型分为整数对象(Integer)和浮点小数对象(Float) 。 ⑦Ruby 中的比较运算符( <=> )称为宇宙飞船运算符。 运算符的左边和右边的值进行比较, 左边<右边,返回负值-1 左边=右边,返回 0 左边>右边,返回正数 1 宇宙飞船运算符主要用于排序。数组等的 sort 方法一般默认用<=>运算符对各元素大小进行判定。