基本语法


首先需要做的是,看懂一个 Podfile。那么需要了解一些最基本的 ruby 语法,这部分非常简单:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'FLEX', :configurations => ['Debug'], :branch => 'develop'
use_frameworks!

以上三行代码是 Podfile 中最为常见的,其实这三行是在调用不同的方法。

方法调用

Ruby 中,方法调用的参数列表可以以空格形式接在方法名后,多个参数以逗号隔开,所以等价于:

source 'https://github.com/CocoaPods/Specs.git'
# =>
source('https://github.com/CocoaPods/Specs.git')platform :ios, '8.0'
# =>
platform(:ios, '8.0')

如果是最后一个参数是字典,那么字典的大括号也可以省略,所以 pod 的调用等价于:

pod 'FLEX', :configurations => ['Debug'], :branch => 'develop'
#=>
map = {:configurations => ['Debug'],:branch => 'develop'
}
pod('FLEX', map)

符号(Symbol)

Symbol 是 Ruby 中的一种对象类型,一般作为名称标签,为了不影响阅读,我把 Symbol 的定义放在最后,这里可以暂且把它当做前面加了 : 的 string。

所以,上面的代码中,出现的 :ios:configuration:branch 以及常见的 :git:tag 等都是 Symbol。

方法定义

Ruby 的方法定义更加灵活,语义也更加丰富。

方法名

比如 :nil?, empty?, merge! 这类方法。

方法名小写,可包含 !? 这类符号。用法可以学习系统的定义:

? 常用于判断,取代了 is_ 开头的定义习惯。
! 常用于需要注意的方法,比如 arr.merge!(other_arr) 表示合并到 arr;与之对应的是 arr.merge(other_arr),表示合并,但不修改 arr,而是返回合并后的结果。
在很多开源库中,! 的用法就比较巧妙,有可能并不表示在当前对象上进行修改,仅仅为了优雅好看也是可能的。

所以,Podfile 中出现的 use_frameworks! 也是在调用方法。

参数列表
为了简单,这里仅介绍可空的参数定义。还是以 pod 方法举栗子:

pod 'Masonry'
pod 'pop', '~> 1.0.7'
pod 'Reachability', :git => 'xxx.git', :tag => 'v3.2.1'

常见的 pod 调用如上,通过调用就能猜出 pod 方法的声明:

# pname: 库名
# version: 指定版本,且可空
# map: 用键值对接收其他参数
def pod(pod_name, version = nil, **map)# ...
end

大致就是这样,这里的 * 和指针没关系

Podfile 解析最佳实践相关推荐

  1. 事务管理最佳实践全面解析

    事务管理最佳实践全面解析 前言 写作这篇文章的起因,是前一段时间,我使用Jbpm工作流引擎开发工作流管理系统的过程中,使用编程方式管理事务时遇到的问题. 由于之前很长一段时间,我一直都在使用Sprin ...

  2. nodejs 实践:express 最佳实践(五) connect解析

    nodejs 实践:express 最佳实践(五) connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需 ...

  3. 重新解析 REST Service(REST Service 的最佳实践,第 1 部分)

    from: https://www.ibm.com/developerworks/cn/webservices/1101_mace_restservicePart1/1101_mace_restser ...

  4. C#开发笔记之21-C#解析Json(序列化/反序列化)的最佳实践。

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#开发笔记之21-C#解析Json(序列化/反序列化)的最佳实践. | .Net中文网. C#开发笔记概述 另外可参考文章:C#开发 ...

  5. 语音识别技术发展史与行业最佳实践全解析

    原标题:语音识别技术发展史与行业最佳实践全解析 在人工智能技术的探索征程里,语音语义识别技术一直扮演着先驱的角色,不管是在技术探索还是商业落地方面都走在了前面.近两年来随着深度学习技术的进一步深入,其 ...

  6. 微服务架构深度解析与最佳实践

    微服务架构深度解析与最佳实践 微服务架构的概念,现在对于大家应该都不陌生,无论使用 Apache Dubbo.还是 Spring Cloud,都可以去尝试微服务,把复杂而庞大的业务系统拆分成一些更小粒 ...

  7. 第42课: Spark Broadcast内幕解密:Broadcast运行机制彻底解密、Broadcast源码解析、Broadcast最佳实践

    第42课:  Spark Broadcast内幕解密:Broadcast运行机制彻底解密.Broadcast源码解析.Broadcast最佳实践 Broadcast在机器学习.图计算.构建日常的各种算 ...

  8. android日志管理最佳策略,深入Android应用开发:核心技术解析与最佳实践

    资源名称:深入Android应用开发:核心技术解析与最佳实践 内容简介: 如何才能真正进阶为Android应用开发高手?必须深入理解Android核心技术的底层原理和在开发中总结并使用各种最佳实践,别 ...

  9. Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策

    我每次与开发人员讨论将应用程序迁移到云时都围绕着两个主要问题. 1. 首先是业务.将应用程序迁移到云可以带来怎样的规模经济? 2. 其次是安全问题."云的安全性如何,尤其是Windows A ...

  10. 最佳实践 | 数据库迁云解决方案选型 流程全解析

    Oracle是非常强大的综合数据库,但同时也存在一些劣势,比如由于采用集中式架构,无法很好地实现横向扩展,并且其稳定性依赖于硬件.出于架构升级.降低成本和云化等需求,越来越多的企业需要"去O ...

最新文章

  1. 为什么集群要奇数_面试系列 redis数据删除amp;集群
  2. 英文环境下中文输入法的设置
  3. 关于二分类的评价指标体系
  4. so easy 的弹出层——使用jquery
  5. MySql Windws 下自动备份脚本
  6. apollo重要服务之metaService
  7. 小米air2se耳机只有一边有声音怎么办_别光盯着AirPods,这些无线蓝牙耳机,其实也很好用...
  8. 整合 activiti 7 springcloud
  9. 屏幕录制(Giphy Capture)并导出Gif动图
  10. KOOM原理讲解(上)-JAVA内存分析
  11. Building IKEv1 and IKEv2 on CentOS 7
  12. 运营商精准大数据——主动出击 精准获客_客户_实时数据
  13. Svelte-Ui-Admin基于svelte-ui中后台管理系统|Svelte3+Vite3后台框架
  14. Python列表(list)的添加元素方法 append、extend、insert-------(超级详细)
  15. UI设计是什么,做UI设计都需要学习哪些软件
  16. 2014第六届华为创新杯编程大赛初赛解题报告
  17. 虾皮跨境电商|shopee店铺上新怎么做到极致?
  18. 计算机应用基础上机指导 教材,普通高等院校计算机优质平台课系列教材:计算机应用基础上机指导...
  19. 学堂在线课程字幕下载
  20. 中国古代哲学的8000倍浓缩

热门文章

  1. 两个平面的位置关系和判定方程组解_必修二数学课后题答案
  2. 自己给打印机怎么加粉墨,联想兄弟打印机加粉步骤
  3. 复习了C++前几章,做一个ASCII码转换的小程序
  4. C语言常用函数大整理
  5. c语言正确声明的格式,c语言函数声明(c语言函数声明格式)
  6. 解决 Visio 2016 打开弹出“windows正在设置 请稍候”的问题
  7. js 表单打开新窗口
  8. Linux查看最后一页日志,linux常用查看文件或日志命令
  9. 数据结构视频教程 -《新东方计算机考研数据结构强化班》
  10. 网络安全2:各种经典渗透方式合集