Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 其他数据类型(二)

1、方法

定义如下所示:

def string_message(str='')
    if str.empty?
        "It's an empty string!"
    else
        "The string is nonempty."
    end
end

参数:' '是参数str的默认值,调用函数时,str参数是可选的,如果不指定,就使用默认值。参数名称任意。
返回值:Ruby方法不显示指定返回值,方法的返回值是最后一个语句的计算结果,也可以显式指定返回值。

下面方法和上面的方法等价:

def string_message(str='')
    return "It's an empty string!" if str.empty?
    return "The string is nonempty."
end

2、unless的用法

#!/usr/bin/ruby
x=1
unless x>2
    puts "x is less than 2"
else
    puts "x is greater than 2"
end

用!!对对象做两次取反操作,把对象转换成布尔值。Ruby中nil是唯一一个布尔值为“假”的对象,其他所有Ruby对象都是“真”值,数字0也是。

>> nil
=> false

>> !0
=> true
>> "foobar".length
>> "foobar".empty?
>> "foobar".include?("foo")
>> puts "Both strings are empty" if x.empty? && y.empty?
>> nil.to_s
=> ""
>> nil.to_s.empty?
=> true

3、数组(array)

(1)split方法的使用

>> "foo bar baz".split #把字符串拆分成幼三个元素的数组,默认在空格处进行拆分
=> ["foo","bar","baz"]

>> "fooxbarxbazx".split('x')
=> ["foo","bar","baz"]

(2)索引

索引可以是负数

>> a=[3,4,2]
>> a[0]
=> 3
>> a[-1]
=> 2

a.first a.second a.last a.length a.empty? a.include?(42)
a.sort a.reverse a.shuffle 这几个方法都不能修改a的值,如果想修改数组的值,要使用相应的bang(!)方法,如下所示:
a.sort! a.reverse! a.shuffle!
a.push 向数组中添加元素,等价于<<操作符 例如:a<<"foo"<<"bar"
Ruby数组中科院包含不同类型的数据,例如整数和字符串
a.join 将字符串串联起来,相当于split的相反操作 a.join(',')

4、值域(range)

>> (0..5).to_a
=> [0,1,2,3,4]
>> a=%w[foo bar baz quux]
=> ["foo","bar","baz","quux"]
>> a[0..2]
=> ["foo","bar","baz"]
>> a=(0..9).to_a
=> [0,1,2,3,4,5,6,7,8,9]
>> a[2..(a.length-1)]
=> [2,3,4,5,6,7,8,9]
>> a[2,-1]
=> [2,3,4,5,6,7,8,9]
>> ('a'..'e').to_a
=> ["a","b","c","d","e"]

5、块

约定:当块中只有一行简单的代码时使用花括号形式;当块是一行很长的代码,或者有很多行时使用do..end形式。例如:

>> (1..5).each{|i| puts 2*i}
(1..5).each do |i|
    puts 2*i
    puts '-'
end
>> 3.times{puts "betelgeuse"}
>> (1..5).map{|i| i**2}
>> %w[a b c].map{|char| char.upcase}
>> %w[A B C].map{|char| char.downcase}
>> %w[A B C].map(&:downcase)
>> ('a'..'z').to_a.shuffle[0..7].join   #生成随机二级域名

6、哈希和符号

哈希(hash)本质上就是数组,它的索引不局限于数字。哈希的索引可以使用任何对象。哈希通过一对花括号包含一些键值对的形式表示。哈希和数组最大的区别在于:哈希中的元素没有特定的顺序。哈希中没有定义的键对应的值是nil

>> user={}    #{}是一个空哈希
>> user["first_name"]="Amy"
>> user["last_name"]="Sun"
>> user["first_name"]
=> "Amy"
>> user
=> {"first_name"=>"Amy","last_name"=>"Sun"}
>> user["e-mail"]
=> nil

>> user={ "first_name"=>"Amy","last_name"=>"Sun" }
=>{"first_name"=>"Amy","last_name"=>"Sun"}

符号:Ruby中特有的数据类型,是没有约束的字符串

>> user={ :name=>"AmySun",:email=>"12***22@**.com" }
=> {:name=>"AmySun",:email=>"12***22@**.com"}
>> user[:name]
=> "AmySun"
>> user[:password]
=> nil

>> h1={ :name=>"AmySun",:email=>"12***22@**.com" }
=> {:name=>"AmySun",:email=>"12***22@**.com"}
>> h1={ name:"AmySun",email:"12***22@**.com" }    #:name=>和name:的作用一样,因此{ :name=>"AmySun" }和{ name:"AmySun" }是等效的,但是只有:name表示符号
=> {:name=>"AmySun",:email=>"12***22@**.com"}
>> h1==h2
=> true

嵌套哈希

>> params={}
=> {}
>> params[:user]={ name:"AmySun",email:"12***22@**.com" }
=> {:name=>"AmySun",:email=>"12***22@**.com"}
>> params
=> {:user=>{:name=>"AmySun",:email=>"12***22@**.com"}}
>> params[:user][:email]
=> 12***22@**.com

哈希中的each方法

>> user={ success:"It worked!",danger:"It failed." }
=> {:success=>"It worked!",:danger=>"It failed."}
user.each do |key,value|
    puts "Key #{key.inspect} has value #{value.inspect}"
end
# 结果
# Key :success has value "It worked!"
# Key :failed has value "It failed."

其中inspect方法返回被调用对象的字符串字面量表现形式,例如:

>> puts (1..5).to_a.inspect
[1,2,3,4,5]
>> puts :name,:name.inspect
name
:name
>> puts "It worked!","It worked!".inspect
It worked!
"It worked!"
>> p :name  #等价于 ‘puts :name.inspect’
:name

7、引入css说明

<%= stylesheet_link_tag 'application',media:'all','data-trubolinks-track'=>true %>

说明:调用函数时,如果哈希是最后一个参数,可以省略花括号;因为data-trubolinks-track中有连字符,所以不能写成data-trubolinks-track:true的样式生成的html源码如下:

<link data-trubolinks-track="true" href="/assets/application.css" media="alll" rel="stylesheet" />

 

 

转载于:https://www.cnblogs.com/sunflower627/p/4638506.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘 要 伴随着人才教学的关注度越来越高,对于人才的培养也是当今社会发展的最为重要的问题之一。为了进一步的进行人才的培养关工作,许多的学校或者是教育的机构逐步的开展了网络信息化的教学和和管理工作,通过信息化的手段和技术实现网络信息化的教育及管理模式,通过网络信息化的手段实现在线答题在线考试和学生信息在线的管理等操作。这样更加的快捷解决了人才培养之中的问题,也在进一步的促进了网络信息化教学方式的快速的发展工作。相较于之前的人才教育和培养工作之中,存在这许多的问题和局限性。在学生信息管理方面通过线下管理的形式进行学生信息的管理工作,在此过程之中存在着一定的局限性和低效性,往往一些突发的问题导致其中工作出现错误。导致相关的教育工作受到了一定的阻碍。在学生信息和学生成绩的管理方面,往常的教育模式之下都是采用的是人工线下的进行管理和整理工作,在这一过程之中存在这一定的不安全和低效性,面对与学生基数的越来越大,学生的信息管理也在面领着巨大的挑战,管理人员面领着巨大的学生信息的信息量,运用之前的信息管理方式往往会在统计和登记上出现错误的情况的产生,为后续的管理工作造成了一定的困难。然而通过信息化的管理方式进行对学生信息的管理不仅可以避免这些错误情况的产生还可以进一步的简化学生信息管理工作的流程,节约了大量的人力和物力的之处。在线答题系统的实现不仅给学生的信息管理工作和在线考试带来了方便也进一步的促进了教育事业信息化的发展,从而实现高效化的教学工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值