zoukankan      html  css  js  c++  java
  • HeadFIrst Ruby 第七章总结 hashes

    前言

    这一章节介绍了 Ruby 中 hash 这一数据类型的用法和特征.

    Hash 的定义

    与 array 的对比

    最大的不同:

    An array can only use integers as indexes, but a hash can use any object as a key.

    其他不同点:

    1. array 用 [] 包括起来, hash 用 { } 包括起来.(但是 specify 的时候都是通过 [[)
    2. array 查找某一个元素需要遍历, hash 查找一个元素是通过 key 的

    Hash return "nil" by default

    解释: 在 specify 的时候,如果键不存在,那么返回的值为 nil.

    Ruby 中的 nil

    在 Ruby 中,与其他语言不同, nil and only nil is "falsy"

    解决办法

    格式: votes = Hash.new(0)
    功能:通过 create a new hash with a default object of "0" 的方式,当我们想要 access 一个不存在的 key 所对应的 value 的时候,默认返回值为 0.

    Hash 的 each 方法

    格式: 
    votes.each do |name, count|
    puts "#{name} : #{count}"
    end

    注意:
    与 array 中的 each 方法的功能相同,但是需要两个参数.

    Hash 作为 method 的 parameter

    method 调用普通 parameter 与 hash 的对比

    不同之处:

    1. 对于 parameter 来说, arguments 必须 in exactly the right order; 对于 hash 来说,这不是必要的
    2. 对于 parameter 来说, required parameters have to appear before optional parameters, 对于 hash 来说, 你可以 skip 任何一个 key that you want.
    3. 对于 parameter 来说,很难区别参数之间, 对于 hash 来说,可以通过 key 来得知 value 代表了什么

    Hash 的简化

    简化方式一: Leave off the braces

    在调用 method 的时候,可以去掉 "{ }" 
    格式: 
    candidate = Candidate.new("Carl Barnes", :age => 49, :occupation => "Attorney")

    简化方式二: Leave out the arrows

    在输入 Hash 的时候, 可以用 key: value 的格式

    Required keyword arguments

    格式:

    def initialize(name, age: nil, occupation: nil, hobby: nil, birthplace: "Sleepy Creek")

    功能:

    Hash 作为 method 的参数的时候, 如果存在 typo 的时候,Ruby 不会报错,因此是一种 silent failures, 可以通过 required keyword 来避免.

    与一般 parameter 的区别

    如果在 : 后面没有值,它和一般的 parameter 功能相同
    如果在 : 后面有值,它和 parameter = default value 的功能相同





  • 相关阅读:
    开发stark组件
    关于AJAX与form表单提交数据的格式
    博客小项目
    Django Orm 常用字段和参数
    IIS启用兼容模式设置(win2k3—Win7)
    C#调用java类、jar包方法(转)
    解决VML遭遇IE8和XHTML DOCTYPE时不能运行的问题(转)
    Nice Validator(Form验证)及Juery zTree控件
    ASP.NET程序中 抛出"Thread was being aborted. "异常(转)
    SQL语句Where中使用别名作为判断条件
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10531972.html
Copyright © 2011-2022 走看看