免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5917 | 回复: 6

关于File.expand_path和:: 开头 [已解决] [复制链接]

论坛徽章:
0
发表于 2011-09-20 09:04 |显示全部楼层
本帖最后由 coolesting 于 2011-09-21 11:01 编辑

1. 经常看到这样的引用 require ::File.expand_path('../app', __FILE__)

引用模型里的方法通常用::
   但这里以::开头又是什么?

在irb打进去 :: 却没什么提示输出 。。。


2.
require ::File.expand_path('../app', __FILE__)

require ::File.expand_path('app')
结果一样, 为什么大部分代码都写成第一种情况。

而且还发现require File.expand_path('app') 结果同上



Answer :
================================
1. ::File 是引用顶级命名空间, File是当前空间


2. ('../app', __FILE__)  是文件当前路径,  ('app') 脚本当前运行路径

论坛徽章:
0
发表于 2011-09-20 12:00 |显示全部楼层
:: --- 从外部访问类时;
结果一样, 为什么大部分代码都写成第一种情况 --- ../path是相对__FILE__所在路径为基准进行扩展。若没有第二个参数将使用当前目录,其实也就是__FILE__所在目录。

论坛徽章:
0
发表于 2011-09-21 09:32 |显示全部楼层
:: --- 从外部访问类时;
结果一样, 为什么大部分代码都写成第一种情况 --- ../path是相对__FILE__所在路 ...
2gua 发表于 2011-09-20 12:00



    __FILE__ 是当前目录, 但expand_path本来默认第二个参数也是当前目录, 这个叫人烦恼。

   :: 是从外部访问类, 但如果是 ::File 那又是访问那个命名空间的File ?

论坛徽章:
0
发表于 2011-09-21 09:51 |显示全部楼层
__FILE__ 是当前目录, 但expand_path本来默认第二个参数也是当前目录, 这个叫人烦恼。

   : ...
coolesting 发表于 2011-09-21 09:32



    第一点,估计是作者的写法习惯吧,不用深究。
    第二点,应该要结合上下文。

论坛徽章:
0
发表于 2011-09-25 16:45 |显示全部楼层
回复 6# 2gua


    意思就是你所说的那样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP