我正在阅读Artifice的来源并看到:
module Artifice
NET_HTTP = ::Net::HTTP
# ...
end
Run Code Online (Sandbox Code Playgroud)
line:https://github.com/wycats/artifice/blob/master/lib/artifice.rb#L6
为什么不做,Net::HTTP而不是::Net::HTTP,当你::用作前缀时它意味着什么?
在命名空间中包装header和cpp文件内容,或者只包装头内容然后在cpp文件中使用命名空间之间有什么区别吗?
差异我的意思是任何排序性能损失或稍微不同的语义,可能会导致问题或我需要注意的任何事情.
例:
// header
namespace X
{
class Foo
{
public:
void TheFunc();
};
}
// cpp
namespace X
{
void Foo::TheFunc()
{
return;
}
}
Run Code Online (Sandbox Code Playgroud)
VS
// header
namespace X
{
class Foo
{
public:
void TheFunc();
};
}
// cpp
using namespace X;
{
void Foo::TheFunc()
{
return;
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有差异,首选形式是什么?为什么?
我是jQuery的新手,想要解析一个xml文档.
我能够使用默认名称空间解析常规XML,但使用xml,例如:
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30">
<s:AttributeType name="ows_ID" rs:name="ID" rs:number="1">
<s:datatype dt:type="i4" dt:maxLength="4" />
</s:AttributeType>
<s:AttributeType name="ows_DocIcon" rs:name="Type" rs:number="2">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
<s:AttributeType name="ows_LinkTitle" rs:name="Title" rs:number="3">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
<s:AttributeType name="ows_ServiceCategory" rs:name="Service Category" rs:number="4">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row ows_ID="2" ows_LinkTitle="Sample Data 1" />
<z:row ows_ID="3" ows_LinkTitle="Sample Data 2" />
<z:row ows_ID="4" ows_LinkTitle="Sample Data 3" />
</rs:data>
</xml>
Run Code Online (Sandbox Code Playgroud)
我真正想要的只是他们<z:row>的.
到目前为止,我一直在做:
$.get(xmlPath, {}, function(xml) …Run Code Online (Sandbox Code Playgroud) 当我放在use Blog;顶部时出现此错误.
警告:非复合名称'Blog'的use语句对...没有影响
Blog 是我的命名空间,我有3个类:文章,列表和类别以及一些函数.
如果我改变我的状态,use Blog\Article;那么它有效......
我不能只指定我想要使用的命名空间吗?我需要提供课程吗?
如果我在该命名空间中有函数怎么办?当我在命名空间之外调用它们时,我被迫\Blog\在每个人的名字前面加上...
我在命名空间和程序集之间变得非常困惑.是System.Data和System.Web命名空间或程序集?
我注意到这些被称为命名空间,同时它们存在于GAC_32文件夹中.那究竟是什么?
我的开发系统(Codegear C++ Builder)的一个变幻莫测是,一些自动生成的头文件坚持要...
using namespace xyzzy
Run Code Online (Sandbox Code Playgroud)
...中的语句,当我最不想要或期望它时,它会对我的代码产生影响.
有没有办法可以以某种方式取消/覆盖以前的"使用"语句来避免这种情况.
也许...
unusing namespace xyzzy;
Run Code Online (Sandbox Code Playgroud) 我刚开始学习F#(之前几乎没有.NET经验),请原谅我可能是一个非常简单的问题:F#中命名空间和模块之间的区别是什么?
谢谢
戴夫
编辑:谢谢Brian的回答.这就是我想知道的.只是澄清:您是否也可以打开命名空间(类似于C#using语句)?
我正在使用第三方API中具有类型属性的对象System.Windows.Media.ImageSource,但我似乎无法在任何地方找到System.Windows.Media命名空间.如果我尝试添加对项目的引用,我System.Windows.Media在选项列表中看不到.我的项目也针对.Net 3.5.
为了能够访问此命名空间,我还需要做些什么吗?
class C {
using namespace std; // error
};
namespace N {
using namespace std; // ok
}
int main () {
using namespace std; // ok
}
Run Code Online (Sandbox Code Playgroud)
编辑:想知道背后的动机.
考虑一对两个源文件:接口声明文件(*.h或*.hpp)及其实现文件(*.cpp).
让*.h文件如下所示:
namespace MyNamespace {
class MyClass {
public:
int foo();
};
}
Run Code Online (Sandbox Code Playgroud)
我在源文件中看到了两种不同的使用命名空间的做法:
*.cpp 练习#1:
#include "MyClass.h"
using namespace MyNamespace;
int MyClass::foo() { ... }
Run Code Online (Sandbox Code Playgroud)
*.cpp 练习#2:
#include "MyClass.h"
namespace MyNamespace {
int MyClass::foo() { ... }
}
Run Code Online (Sandbox Code Playgroud)
我的问题:这两种做法之间是否有任何差异,哪一种被认为比另一种更好?
namespaces ×10
c++ ×4
.net ×2
c# ×2
assemblies ×1
c++builder ×1
f# ×1
header-files ×1
javascript ×1
jquery ×1
module ×1
php ×1
ruby ×1
using ×1
xml ×1
xsd ×1