Ruby构造元素:数据、表达式、和流程控制

来源:互联网 发布:英国男装品牌 知乎 编辑:程序博客网 时间:2024/06/05 20:52
摘要 常量 在Ruby中的表达形式是以大写字母开头的变量名。Pi = 3.141592 Pi = 500。如果尝试修改,将给出警告

常量

在Ruby中的表达形式是以大写字母开头的变量名。Pi = 3.141592 Pi = 500。如果尝试修改,将给出警告

字符串


puts "abc" * 5

abcabcabc

操作符可以应用于字符串中。如:puts "x" > "y",比较ASCII值

获得ASCII值

puts ?x

puts 120.chr

插写

表达式(甚至代码逻辑)直接嵌入到字符串中

x = 10

y = 20

puts "#{x} + #{y} = #{x + y}"

10 + 20 = 30

使用插写方式不用显示地把数字转换成字符串。

数组

x = [1, 2, 3, 4]

puts x[2]

x[2] = "Fish" * 3

x = []

x << "Word"

<<是把数据放到数组末尾的运算符。也可以调用push方法,具有相同的效果

puts x.pop

从数组末尾弹出数据

迭代

[1, "test", 2, 3, 4].each{|element| puts element.to_s + "x" }

each方法可以在数组的元素中进行迭代,还可以用collect方法,对数组进行实时转换

[1, 2, 3, 4].collect{ | element | element * 2}

[2, 4, 6, 8]

数组减法,从主数组中删除两个数组都有的元素

x = [1, 2, 3, 4, 5]

y = [1, 2, 3]

z = x - y

puts z.inspect

检查数组是否为空

x = []

puts "x is empty" if x.empty?

数组是否包含某个元素

x = [1, 2, 3]

puts x.include?("x")

puts x.include?(3)

访问数组第一个和最后一个元素

x = [1, 2, 3]

puts x.first

puts x.last

反转数组

x = [1, 2, 3]

puts x.reverse.inspect

散列表

dictionary = { 'cat' => 'feline animal', 'dog' => 'canine animal' }

puts dictionary['cat']

散列表迭代

x = { "a" =>, "b" => 2}

x.each { |key, value| puts "#{key} equals #{value}" }

检索键

puts x.keys.inspect

删除散列表元素

x.delete("a")

有条件删除

x.delete_if { |key, value| value < 25 }

流程控制

if 与 unless

unless 与 if 正好相反。

三元运算符

age = 10

type = age < 18 ? "child" : "aduit"

elsif 与 case

fruit = "orange"

case fruit

 when "orange"

  color = "orange"

 when "apple"

  color = "green"

 when "banana"

  color = "yellow"

 else

  color = "unknow"

end

while 与 until

x = 1

while x < 100

 puts x

 x = x * 2

end

x = 1

until x > 99

 puts x

 x = x * 2

end

代码块

代码块本质是匿名的、无名的方法或函数。

def each_vowel(&code_block)

 %w{a e i o u}.each { |vowel| code_block.call(vowel) }

end

each_vowel { |vowel| puts vowel }

yield自动检测传递给它的代码块

def each_vowel

 %w{a e i o u}.each { |vowel| yield vowel }

end

each_vowel { |vowel| puts vowel }

可以将代码块存储在变量中

print_parameter_to_screen = lambda { |x| puts x }

print_parameter_to_screen.call(100)

ruby中的大数字

其他语言常常有数字大小的限制,通常是32个二进制位。Ruby则不同,它没有这方面的限制。

实际上,它是用不同的类来处理的,Fixnum和Bignum,会自动处理。边界值是1 073 741 823


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买的家具味道大怎么办 买的木床有味道怎么办 宝宝拍胸片衣服有扣子怎么办 前扣内衣扣子坏了怎么办 运动内衣穿上平胸怎么办 文胸的海绵变形了怎么办 文胸背部松紧变形了怎么办 黑色裤子被漂白水漂红了怎么办 黑色裤子晒红了怎么办 黑色裤子泛红了怎么办 黑色裤子洗红了怎么办 新内衣穿了痒怎么办 灰色针织运动裤洗完发黄怎么办 皮衣买大了一号怎么办 紧身衣破了一个洞怎么办 紧身衣破了一个小洞怎么办 内衣肩带不带调整的怎么办 不正确佩戴胸罩导致下垂怎么办 增肌时期晚上饿怎么办 啤酒和可乐喝了怎么办 脸部毛孔堵塞不出汗怎么办 减肥运动完饿了怎么办 想减肥晚上饿了怎么办 孕妇喝不进去水怎么办 跑步喝多了水怎么办 衣柜门轮子坏了怎么办 穿瑜伽裤下边有缝怎么办 3岁宝宝比较内向怎么办 我想和我同学搞基怎么办 自己做的葡萄酒太甜怎么办 吉米学校想退款怎么办 汽车租赁公司不退押金怎么办 身材不好怎么办健身教练形象照 反祈祷式做不到怎么办 窦性心跳过缓怎么办 四维彩超查出胎儿心脏有问题怎么办 减脂肚子饿了怎么办 做瑜伽腰扭到了怎么办 出了汗怎么办活动反思 农村都是老人和孩子怎么办 瑜伽垫容易出现痕迹怎么办