我目前正在创建一个Visual Studio扩展,我的问题是找出命名空间.我知道约定是(<Company>.<Product>).<Feature>,我的问题是我创建了一个明确针对Visual Studio的实用程序库.如何命名此命名空间?
using MyCoolCompany.VisualStudio.Utility;
Run Code Online (Sandbox Code Playgroud)
要么
using MyCoolCompany.VisualStudioUtility;
Run Code Online (Sandbox Code Playgroud) 我目前正在查看一些代码,以进行一些更改。当查看类定义之一时,代码具有我从未见过的语法。
字段的某些类型在其上带有前缀(例如,ImplementationGuide.Package和TableModel.Row)。这是什么符号?
看起来它与定义类型的名称空间有某种关系,但它不是完整的名称空间,而只是其最后一个组成部分。
任何帮助表示赞赏
我试图在Typo3扩展中创建多个Viewhelpers。
<?php
namespace PdvPolymer\ViewHelpers;
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
class ButtonUpViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper
{...
Run Code Online (Sandbox Code Playgroud)
ViewHelper位于目录扩展名\ Classes \ ViewHelpers中
当我打电话给它时,这很好用
<div xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers" xmlns:p="http://typo3.org/ns/Extension/ViewHelpers">
<p:buttonUp></p:buttonUp>
</div>
Run Code Online (Sandbox Code Playgroud)
但是现在我已经尝试将ViewHelper放在诸如extension \ Classes \ ViewHelpers \ Custom之类的子目录中
现在,ViewHelper的新命名空间为
namespace Extension\ViewHelpers\Custom;
Run Code Online (Sandbox Code Playgroud)
现在我用以下方式调用ViewHelper
<p:custom.buttonUp></p:custom.buttonUp>
Run Code Online (Sandbox Code Playgroud)
但是现在我得到一个类似的错误:
Oops, an error occurred! Code: 2016091908135339232bbd
Run Code Online (Sandbox Code Playgroud)
我的问题是,我错了什么?Typo3中的内部Fluid-Extension像我一样都一样。我检查了!
有人知道吗?
这是一个非常基本的问题,但实际上我从未定义过名称空间.我正在尝试将基于Qt的库中的类分组到各种名称空间中(并且还允许更容易的扩展而不会出现名称冲突).例如,主类(也代表库)属于顶级命名空间lib:
namespace lib {
class LibClass;
}
Run Code Online (Sandbox Code Playgroud)
这LibClass使用了一堆其他名称空间和类,这些名称空间和类在头文件中包含的其他头文件中定义LibClass:
#include <QObject>
#include "libclass_global.h"
#include "Manager.h"
#include "Configurator.h"
namespace lib {
class LibClass;
}
class LIBCLASSSHARED_EXPORT LibClass : public QObject {
public:
LibClass();
...
signals:
...
private slots:
...
public slots:
...
private:
lib::core::communication::Manager manager; // PROBLEM HERE
lib::core::communication::Configurator configurator; // PROBLEM HERE
}
Run Code Online (Sandbox Code Playgroud)
与Manager.h含
namespace lib {
namespace core {
namespace communication {
class Manager;
}
}
}
class Manager {
public:
Manager(); …Run Code Online (Sandbox Code Playgroud) 假设我正在使用using namespace std(不可否认的不良做法)并且我abs在我的代码中使用该函数(以获得重载的绝对函数).具体来说,我的MWE是:
#include <cmath>
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char* argv[]) {
double f(-0.4);
std::cout<<"abs(f) = "<<abs(f)<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
如果我注释掉该using namespace std;行,则输出为
abs(f) = 0
Run Code Online (Sandbox Code Playgroud)
否则输出是
abs(f) = 0.4
Run Code Online (Sandbox Code Playgroud)
我不明白的是,在后一种情况下如何调用"正确的"abs函数,因为即使stdlib.h有一个abs只返回int's'的函数.
事实上,这个问题的第二个答案是使用using namespace std;可能还不够.这是真的?我的MWE似乎与此相矛盾.
我在Linux上使用gcc-4.8,这可能是解决依赖关系最有问题的组合.
我有两个不同的命名空间,每个都有一个Thing类:
namespace First.Second.Third
{
public class Thing { }
}
namespace Fourth.Fifth.Sixth
{
public class Thing { }
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试在Thing别处使用,当然编译器抱怨由于对该类的模糊引用:
namespace ConsoleApp1
{
using First.Second.Third;
using Fourth.Fifth.Sixth;
internal static class MainEntryPoint
{
internal static void Main(string[] args)
{
var x = new Thing(); // Complaint.
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在using指令中的一个名称空间中添加别名,编译器错误就会消失:
using MyAlias = First.Second.Third;
using Fourth.Fifth.Sixth;
Run Code Online (Sandbox Code Playgroud)
现在编译器认为我指的是Fourth.Fifth.Sixth.Thing什么时候var x = new Thing();.
为什么编译器只是通过向其中一个命名空间添加别名来解决歧义?为什么它会自动选择我没有别名的命名空间?
我希望在SO和其他地方之前有很多文档和覆盖很多次,但我找不到答案.如果有人可以帮我找到傻瓜吗?
编辑:我猜不到每个人都在同一个页面上.这是一个可能有帮助的真实示例:
如果我有两个名叫"鲍勃"的人,我只是说"在这里,把它交给鲍勃",你就不会知道该给谁.如果我说,一个是"鲍勃史密斯"而另一个是"鲍勃约翰逊",我当然可以说"在这里,把它交给鲍勃史密斯".现在,如果我说,"让我们用一个新名字给Bob Smith打电话:Bob Brady".如果我然后说"在这里,给这个"鲍勃",那仍然是模棱两可的.看到我的观点?
如何在一个文件yii2中使用两个名称空间?
我需要用
namespace backend/controllers;
namespace MongoDb;
Run Code Online (Sandbox Code Playgroud) program.pl
Use Mypackage;
sub test{
print "from test";
}
Run Code Online (Sandbox Code Playgroud)
Mypackage.pl
Package Mypackage;
::test();
Run Code Online (Sandbox Code Playgroud)
这没什么回报.
我从包中看到了几个关于调用子例程中调用子例程的线程,但我想做相反的事情
从主命名空间(program.pl)打印包中的子例程
这可能吗 ?
我有一个c ++程序,其中我:
void (*foo)和void (*bar)namespace1包含功能void foo()和void bar()namespace2还包含功能void foo()和void bar()在运行时,我希望用户能够传递一个变量,比如说choice,它表示所选的命名空间.然后,类中的函数将映射到相应命名空间中的相应函数.
目前,我正在使用以下内容:
if (choice == "namespace1") {
my_class.foo = &(namespace1::foo);
my_class.bar = &(namespace1::bar);
} else if (choice == "namespace2") {
my_class.foo = &(namespace2::foo);
my_class.bar = &(namespace2::bar);
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但是当我的可用命名空间列表增加并且每个命名空间提供了我希望传递给类的9个函数时,它变得相当麻烦.
有什么办法可以整理一下吗?我的第一个想法是:
if (choice == "namespace1") {
my_namespace = namespace1;
} else if (choice == "namespace2") {
my_namespace = namespace2;
}
my_class.foo = &(my_namespace::foo);
my_class.bar = &(my_namespace::bar);
Run Code Online (Sandbox Code Playgroud)
但是,如果我理解正确,我不能使用名称空间作为变量. …
我是Delphi程序员,我想知道与C#中的Delphi单元有什么相同的东西?任何人都可以提供带有一个或两个函数的样本C#单元然后如何调用这些函数?我的意思是像C#中的Delphi单元,它有一些函数,我每次都通过导入部分导入它们使用它们.