001 | #coding:utf-8 |
002 | #熟悉ruby基本数据类型 |
003 |
004 |
005 | class Ruby01 |
006 | puts "基本数字类型" |
007 | puts 1 |
008 | puts 1 . 0 |
009 | puts 1 . class #输出Fixnum |
010 | puts 1 . 0 . class #输出Float |
011 | puts 1 . 0 . class . class #输出Class |
012 | |
013 | puts |
014 | puts "算数基本操作" |
015 | puts 4 / 2 |
016 | puts 4 / 2 . 0 |
017 | puts 4 . 0 / 2 . 0 |
018 | puts 4 * 2 |
019 | puts 4 ** 2 |
020 | puts 4 % 2 |
021 | |
022 | puts |
023 | puts "文本" |
024 | puts '这是第一个ruby程序' \ |
025 | '使用单引号可以跨越多行' |
026 | puts "双引号使用" |
027 | puts "4/2=#{4/2}" #双引号中可以使用变量和表达式,单引号下不行,会当做字符串输出 |
028 | puts "圆周率是%.4f" %Math:: PI #相当于 printf"圆周率是%.4f"%Math::PI |
029 | |
030 | puts |
031 | puts "访问字符串和子字符串" |
032 | s= "hello" |
033 | puts s[ 0 ] |
034 | puts s[s.length()- 1 ] |
035 | puts s[- 1 ] |
036 | puts s[- 2 ] |
037 | puts s[-s.length()] |
038 | puts s[s.length()] |
039 | puts s[s.length()]. class #输出NilClass |
040 | |
041 | puts |
042 | puts s[ 0 , 3 ] |
043 | puts s[- 3 , 5 ] |
044 | puts s[ 0 ,- 2 ]. class |
045 | puts s[ 2 .. 4 ] |
046 | |
047 | |
048 | puts |
049 | s[s.length(), 0 ]= "world" |
050 | puts s |
051 | s[ 5 , 0 ]= "," |
052 | puts s |
053 | s[ 5 , 5 ]= "" |
054 | puts s |
055 | |
056 | puts |
057 | s= "字符串迭代" |
058 | puts s |
059 | s.each_char{|x| print "#{x}-" } |
060 | |
061 | #数组 |
062 | = begin |
063 | ruby中数组用逗号分割元素 |
064 | 数组下标从 0 开始 |
065 | []数组长度为 0 |
066 | each 方法可以遍历一个数组 |
067 | = end |
068 | puts |
069 | puts "数组" |
070 | arr =[ 1 , 2 , 3 ];arr. each { |x|print "#{x}," }; |
071 | puts |
072 | arr =[- 10 ... 0 , 0 .. 10 ,] |
073 | puts "arr数组第一个元素为数组" ;arr[ 0 ]. each {|x|print "#{x}," }; |
074 | puts "arr数组第二个元素为数组" ;arr[ 1 ]. each {|x|print "#{x}-" }; |
075 | |
076 | |
077 | |
078 | puts |
079 | puts "数组创建" |
080 | puts "empty=Array.new():#{Array.new()}" |
081 | puts "nils=Array.new(3):#{Array.new(3)}" |
082 | puts "0=Array.new(4,0):#{Array.new(4,0)}" |
083 | puts "copy=Array.new(nils):#{Array.new(arr)}" #数组拷贝 |
084 | puts "count =Array.new(3):#{Array.new(3){|x| x+1}}" #元素索引填充数组 |
085 | |
086 | |
087 | |
088 | puts |
089 | puts "数组运算" |
090 | = begin |
091 | ruby中是可变数组 |
092 | >>可以给数组添加数据 |
093 | >>可以添加多条数据 |
094 | |取合集 |
095 | &取交集 |
096 | = end |
097 | arr0=[] |
098 | arr0<< 1 |
099 | arr0<< 2 << 3 |
100 | |
101 | puts "#{arr0}" |
102 | arr0<<[ 4 , 5 , 6 ] |
103 | puts "#{arr0}" |
104 | arr1=[ 1 , 3 , 2 , 5 , 4 ] |
105 | arr2 =[ 2 , 3 ] |
106 | puts "取并集:{arr1 | arr2}-->#{arr1|arr2}" |
107 | puts "取并集:{arr2 | arr1}-->#{arr2|arr1}" |
108 | puts "取交集:{arr1 & arr2}-->#{arr1&arr2}" |
109 | puts "取交集:{arr2 & arr1}-->#{arr2&arr1}" |
110 | |
111 | #对象 |
112 | = begin |
113 | equal比较对象 |
114 | eql比较对象值 |
115 | ==比较值 |
116 | |取合集 |
117 | &取交集 |
118 | object_id用来比较是否是同一个对象 |
119 | |
120 | = end |
121 | puts |
122 | puts "对象比较" |
123 | obj1= "ruby" |
124 | obj2=obj3= "ruby" |
125 | |
126 | puts obj1.equal?(obj2) |
127 | puts obj2.equal?(obj3) |
128 | puts obj1.eql?(obj2) |
129 | puts obj2.eql?(obj3) |
130 | puts "obj1的obj1.object_id=#{obj1.object_id},obj2的obj2.object_id=#{obj2.object_id},obj3的obj3.object_id=#{obj3.object_id}" |
131 | puts 1 == 1 . 0 #==比较,可以进行值转换 |
132 | puts 1 .eql?( 1 . 0 ) #eql比较,不能进行值转换 |
133 | puts "0==nil:#{0==nil}" #判断是否为 nil 另一种方法 0 . nil ? |
134 | = begin |
135 | to_i,to_f,to_s用来转换成 Integer ,Float,string类型 |
136 | = end |
137 | puts |
138 | puts "类型转换" |
139 | s1= 1 |
140 | puts "s1是:#{s1.class}" |
141 | s2= "1" |
142 | puts "s2是:#{s2.class}" |
143 | s3= 1 . 0 |
144 | puts "s3是:#{s3.class}" |
145 | s4=s1.to_s() |
146 | puts "s4是:#{s4.class}" |
147 | s5=s2.to_i() |
148 | puts "s5是:#{s5.class}" |
149 | puts "s2==s4:#{s2==s4}" |
150 | puts "s1==s5:#{s1==s5}" |
151 | |
152 | |
153 | |
154 |
155 | end |
156 | #new()创建对象 |
157 | e =Example01. new (); |
158 |
159 | print e |