javascript

git

python

java

loops

github

django

c#

reactjs

git-remote

iteration

namespaces

using-directives

file-io

iterator

yield

spring

annotations

terminology

list

C ++命名空间,与Java包的比较

我最近完成了一堆Java编码,并且已经习惯了非常特定的软件包命名系统,例如深度嵌套。 com.company.project.db。在Java,AS3 / Flex和C#中运行正常。 我也曾经在C ++中看到过相同的范例,但是我也听说将C ++名称空间视为Java包的直接对应对象是很不好的。

是真的,为什么? 名称空间/程序包有何相似之处和不同之处? 如果您使用深层嵌套的名称空间,可能会出现什么问题?

trans by 2020-08-12T03:55:03Z

xsd-XML名称空间和属性

我试图了解名称空间如何在XML中工作。 当我有一个像foo:bar这样的元素时,这些属性通常将没有名称空间。 但是有时候他们会。 即使声明了默认名称空间,属性也位于元素的名称空间中吗? 查看xsd中的xhtml,似乎属性是架构的一部分,应该在xhtml的命名空间中,但是它们从未以这种方式呈现...

trans by 2020-08-11T15:52:46Z

C ++中没有名称的命名空间

可能重复:
未命名/匿名名称空间与静态函数

我碰到了这段代码

namespace ABC {
namespace DEF {

namespace
{

我希望名称空间后面应加上一些名称,但此代码并非如此。

C ++允许吗? 这个未命名的命名空间有什么优势?

trans by 2020-08-11T06:06:49Z

xslt-XSL:避免将名称空间定义导出到生成的XML文档

我想从一些XML文件中获取数据并将其转换为新的XML文档。 但是,我不希望XSLT中的名称空间定义出现在结果文档中。

换一种说法:

资源:

<Namespace:Root xmlns:Namespace="http://www.something.com">

样式表:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:Namespace="http://www.something.com">

结果:

<resultRoot xmlns:Namespace="http://www.something.com">
<!--I don't want the Namespace definition above-->

我正在使用msxsl进行转换。

trans by 2020-08-10T20:44:40Z

如何在Ruby类/模块命名空间中转换模型?

我有一个模型Products :: Car。 如何转换其属性?

我已经尝试过了:

activerecord: 
  models:
    products:
      car: "Автомобиль"
  attributes:
    products:
      car:
        owner: "Владелец"

还有这个:

activerecord: 
  models:
    products_car: "Автомобиль"
  attributes:
    products_car:
      owner: "Владелец"

但是,如果我尝试使用Products :: Car.model_name.human,它仍然显示“ Car”。 我的其他翻译效果很好,并且语言设置为:ru。

trans by 2020-08-06T20:38:04Z

等效于Javascript中的Python目录

当我从解释器编写Python代码时,我可以键入dir()以获取在当前作用域中定义的名称列表。 当我使用交互式控制台(如Firebug,Chrome控制台等)从浏览器开发Javascript代码时,如何以编程方式实现具有相同的信息?

trans by 2020-08-03T08:56:19Z

私有类函数与未命名名称中的函数

我发现自己倾向于没有私有类功能。 如果可能的话,私有类的所有候选函数而不是我放入未命名的命名空间,并将所有必要的信息作为函数参数传递。 我没有合理的解释为什么要这样做,但至少对我来说看起来更自然。 结果,我需要在头文件中公开较少的内部细节。

您的意见-这是正确的做法吗?

trans by 2020-08-03T08:43:46Z

C ++-在名称中使用声明的范围

在C ++头文件中使用命名空间中的using声明是否安全(且正确),如下所示:

#include <boost/numeric/ublas/vector.hpp>
namespace MyNamespace {
    using boost::numeric::ublas::vector;
    vector MyFunc(vector in);
}

即 是在MyNamespace块中正确包含“使用boost :: numeric :: ublas :: vector”,还是会污染任何包含此标头的文件的名称空间?

trans by 2020-08-01T18:38:44Z

import-在PHP中导入类和名称空间:领先的反斜杠有什么区别?

两者之间有什么区别:

use Exception;
use \Exception;

或那些:

use Foo\Bar;
use \Foo\Bar;

该手册说:

请注意,对于命名空间名称(完全 合格的名称空间名称包含 命名空间分隔符,例如Foo \ Bar 而不是全球名称 不,例如FooBar),领先 反斜杠是不必要的,不是 允许,因为导入名称必须完整 合格,未处理 相对于当前名称空间。

但是我并不真正理解这一点,因为上述所有变体都可以工作,即,绝对不允许这样做。

查看use \Exception,发现is_global(设置为反斜线时设置)仅在以下情况下用作警告:

namespace {
    use Exception;
}

这告诉我:“具有非复合名称'Exception'的use语句无效”。 (尽管对use \Exception执行相同的操作效果不大,但不会发出警告。)

所以:我错过了什么吗? 实际上有什么区别吗?

trans by 2020-07-26T21:02:16Z

为什么我们不能在类中声明名称空间?

在一个类中声明一个类是有效的。 (嵌套类)

在类中声明名称空间无效。

问题是:除了c ++语法/语法问题之外,是否有任何正当理由禁止在类内声明名称空间?


至于为什么我要这样做,这是一个例子:

让我们对二叉树容器进行基本声明

template<typename Data>
class binary_tree
{
 public:
  ... stuff ....     

 private:
  ... iterators class declaration ...

 public:
  typedef left_depth_iterator_impl     left_depth_iterator;
  typedef right_depth_iterator_impl    right_depth_iterator;
  typedef left_breadth_iterator_impl   left_breadth_iterator;
  typedef right_breadth_iterator_impl  right_breadth_iterator;

  ... stuff ....     

 private:
  Data         data;
  binary_tree* left;
  binary_tree* right;
};

现在,我注意到我的课程中有很多迭代器,因此我想在相同的名称空间中将它们重新组合,如下所示:

template<typename Data>
class binary_tree
{
 public:
  ... stuff ....     

 private:
  ... iterators class declaration ...

 public:
  namespace iterator
  {
    typedef left_depth_iterator_impl     left_depth;
    typedef right_depth_iterator_impl    right_depth;
    typedef left_breadth_iterator_impl   left_breadth;
    typedef right_breadth_iterator_impl  right_breadth;
  }

  ... stuff ....     

 private:
  Data         data;
  binary_tree* left;
  binary_tree* right;
};

这将允许一个简单的用法:

void  function()
{
  binary_tree::iterator::left_depth   it;

  ...stuff...
}

如果我使用类而不是名称空间,则此方法有效,但随后我被迫声明一个永远不会实例化的类,这是一个相当大的名称空间。

为什么要在类中允许嵌套类并禁止嵌套名称空间? 这是一个传统的负担吗?


带有语义原因的答案不仅会引用标准的一部分(尤其是语法部分),因此将不胜感激:)

trans by 2020-07-25T22:25:06Z

python-“ import *”导入到底是什么?

在Python中,from project.model import __init__到底要导入什么? 是否导入在包含文件夹中找到的from project.model import *

例如,是否需要声明from project.model import __init__,还是from project.model import *足够?

trans by 2020-07-23T10:46:36Z

php-在Laravel 4中使用名称空间

我是Laravel的新手,通常使用PHP名称空间。 在决定创建一个名为File的模型之前,我没有遇到任何问题。 如何正确命名空间,以便可以使用File模型类?

文件是app/controllers/FilesController.phpapp/models/File.php。我试图在FilesController.php中制作一个新的File

trans by 2020-07-21T13:29:56Z

c#-“ CompanyName.Foo”是一个“命名空间”,但其用法类似于“类型”

重述问题

我要复活这个问题,因为今天我又遇到了这个错误,并且我仍然完全感到困惑,为什么C#编译器会费心地检查在名称空间不存在的上下文中名称空间和类型之间的冲突。

如果我有...

public Foo MyFoo { get; set; }

...为什么编译器会关心using既是名称空间又是类型? 您可以将属性声明为名称空间而不是类型吗?

“像类型一样使用命名空间”编译器错误背后的逻辑是什么? 这让我免受什么困扰?

[我该如何标记埃里克·利珀特(Eric Lippert)? :)]


原始问题


问题

我有一个项目“ Foo”,其默认命名空间为using。我有一个数据库,也称为“ Foo”。

当我在数据库上运行SqlMetal.exe时,它将生成一个类using

然后,当我尝试使用此类作为类型创建属性时,如下所示...

using CompanyName.Foo.Models;
...
public Foo DataContext { get; set; }

...我得到了错误:

'CompanyName.Foo'是一个'命名空间',但其用法类似于'type'。

我被迫做...

public CompanyName.Foo.Models.Foo Foo { get; set; } // :-(

问题:

  1. 为什么会发生此错误? 我的财产声明不包含using,为什么这是一个问题? 简而言之:Foo != CompanyName.Foo。此外,为确保确定,我对namespace Foo的整个解决方案进行了搜索,并得出了零命中(如果我实际上使用了名称空间Foo,则可以理解会出现错误)。

  2. [回答]每次我想使用using完全合格时,有什么办法吗?

  3. [回答]除了using(不更改数据库名称)之外,是否有任何方法可以使SqlMetal将该类命名为其他名称? 我可以使用开关更改名称空间,但是我不知道更改实际类名称的方法。

更新资料

仍在寻找答案(1)。

好吧 钉(2)和(3)。

用途

我的所有using陈述均被要求:

using System;
using System.ComponentModel;
using System.Data.Linq;
using System.Linq;
using MyCompany.Foo.Models;
trans by 2020-07-18T03:43:20Z

PHP DateTime类Namesp

我正在使用symfony2框架,并且想使用PHP的DateTime类(PHP版本是5.3)。

这里的声明:

namespace SDCU\GeneralBundle\Entity;

class Country
{
   public function __construct(){
       $this->insertedAt = new DateTime();
   }
}

但是,在执行此构造函数时,出现错误,提示没有“ SDCU \ GeneralBundle \ Entity \ DateTime”类。 我一直在寻找DateTime的命名空间,但没有成功...知道吗?

trans by 2020-07-09T18:56:42Z

编码风格-编写健壮的R代码:命名空间,掩码和使用`::`op

精简版

对于那些不想通读我的“案例”的人,这是本质:

  1. 建议采用什么方法来最大程度地减少新软件包破坏现有代码的机会,即使您编写的代码尽可能健壮?
  2. 在以下情况下,如何充分利用命名空间机制?

    a)仅使用贡献包(例如在某些R Analysis Project中)?

    b)关于开发自己的软件包?

  3. 如何最好地避免与形式类(在我的例子中大多数是引用类)发生冲突,因为甚至没有类似于类(AFAIU)的命名空间机制::


R宇宙的运作方式

大约两年来,这一直困扰着我,但是我似乎并没有找到令人满意的解决方案。 另外,我觉得情况越来越糟。

我们看到CRAN,github,R-Forge等之类的软件包越来越多,简直太棒了。

在这样的去中心化环境中,组成R的代码库(为简单起见,假设是R的基数,为简化起见,R的代码)自然会在鲁棒性方面偏离理想状态:人们遵循不同的约定,有S3,S4 ,S4参考类等。如果存在强制执行约定的“中央清算实例”,事情就不会像它们那样“对齐”。 没关系。

问题

鉴于以上所述,使用R编写健壮的代码可能非常困难。 并非您需要的所有内容都将在base R中。对于某些项目,您最终将加载很多贡献的软件包。

恕我直言,这方面的最大问题是在R中使用名称空间概念的方式:R允许简单地编写某个函数/方法的名称而无需明确要求其名称空间(即::namespace::foo)。

因此,为了简单起见,这就是每个人都在做的事情。 但是那样,名称冲突,代码损坏以及对代码进行重写/重构的需求只是时间问题(或加载的不同软件包的数量)。

充其量,您将了解新添加的软件包掩盖/重载了哪些现有功能。 最糟糕的是,直到代码中断,您才会有任何线索。

几个例子:

  • 尝试同时加载RMySQL和RSQLite,它们进行得不太顺利
  • RMongo也将覆盖RMySQL的某些功能
  • 预测掩盖了与ARIMA相关的功能的许多内容
  • R.utils甚至掩盖了::例程

(我不记得具体是哪个功能引起了问题,但是如果有兴趣,我愿意再次查找它)

令人惊讶的是,这似乎并没有打扰很多程序员。 我试图在r-devel上引起几次兴趣,但没有任何效果。

使用::运算符的缺点

  1. 正如Dominick Samperi指出的那样,在某些情况下,使用::运算符可能会严重损害效率。
  2. 在开发自己的程序包时,您甚至无法在自己的代码中使用::运算符,因为您的代码尚不是真正的程序包,因此也没有名称空间。 因此,我最初必须遵循namespace::foo的方式进行构建,测试,然后再将所有内容更改为namespace::foo。不是真的。

避免这些问题的可能解决方案

  1. 将每个包中的每个函数重新分配给遵循某些命名约定的变量,例如 为了避免与namespace::foo相关的低效率,请使用::(我在这里对此进行了概述)。 优点:可行。 缺点:笨拙,您使用的内存增加了一倍。
  2. 开发程序包时模拟名称空间。 AFAIU,这实际上是不可能的,至少在那时我被告知。
  3. 强制使用::。恕我直言,这将是最好的选择。 当然,我们会失去一些简单性,但是R宇宙再也不是简单的了(至少它不像00年代初那样简单)。

那(正式)课程呢?

除了上述方面之外,::方法对于功能/方法非常有效。 但是类定义呢?

以类255785664851109595808的timeDate包为例。假设出现了另一个包,也有timeDate类。我看不到如何明确声明要从这两个包中的一个新类timeDate

这样的事情是行不通的:

new(timeDate::timeDate)
new("timeDate::timeDate")
new("timeDate", ns="timeDate")

随着越来越多的人将R包转换为OOP风格,从而导致大量的类定义,这可能是一个巨大的问题。 如果有一种方法可以显式地解决类定义的名称空间,我将非常感谢一个指针!

结论

尽管这有点冗长,但我希望我能指出核心问题/问题,并希望在这里提高认识。

我认为devtools和mvbutils确实有一些方法可能值得推广,但是我敢肯定还有很多话要说。

trans by 2020-07-08T20:24:27Z

为什么C ++朋友类仅在其他名称空间中需要前向声明?

假设我有一个类A::BF,应该与类A::C(在全局名称空间中)和C(在名称空间A中)成为朋友。

  • 成为A::BF的朋友,必须预先声明A::C
  • 如果要成为2954009466469069090304的朋友,则无需提前声明A::C
  • 同样,一个类A::BF也可以成为A::C的朋友,而无需提前声明

以下代码说明了这一点,并使用GCC 4.5,VC ++ 10和至少一个其他编译器进行编译。

class G {
    friend class F;
    int g;
};

// without this forward declaration, F can't be friend to A::C
class F;

namespace A {

class C {
    friend class ::F;
    friend class BF;
    int c;
};

class BF {
public:
    BF() { c.c = 2; }
private:
    C c;
};

} // namespace A

class F {
public:
    F() { g.g = 3; c.c = 2; }
private:
    G g;
    A::C c;
};

int main()
{
    F f;
}

在我看来,这似乎前后矛盾。 这是有原因的,还是仅仅是标准的设计决定?

trans by 2020-07-06T04:40:12Z

“轮询”中的Django错误不是注册的名称空间

昨天我正在使用本教程开发第一个应用程序。 这是一个民意测验的应用程序。第一页显示问题,当您单击问题时,它会显示您可以对其进行投票的选项。

我有很棒的人昨天帮助我,并告诉我使用命名空间。 我已经阅读了命名空间教程,并尝试应用我的知识到场景,但到目前为止还没有奏效。

当我单击第一页上的问题时,这是我的错误。

 NoReverseMatch at /polls/5/

 u"'polls" is not a registered namespace

 Request Method:    GET
 Request URL:   http://127.0.0.1:8000/polls/5/
 Django Version:    1.4.3
 Exception Type:    NoReverseMatch
 Exception Value:   

 u"'polls" is not a registered namespace

 Exception Location:    C:\hp\bin\Python\Lib\site-packages\django\template\defaulttags.py in render, line 424
 Python Executable:     C:\hp\bin\Python\python.exe
 Python Version:    2.5.2
 Python Path:   

 ['C:\\djcode\\mysite',
  'C:\\hp\\bin\\Python\\python25.zip',
  'C:\\hp\\bin\\Python\\DLLs',
  'C:\\hp\\bin\\Python\\lib',
  'C:\\hp\\bin\\Python\\lib\\plat-win',
  'C:\\hp\\bin\\Python\\lib\\lib-tk',
  'C:\\hp\\bin\\Python',
  'C:\\hp\\bin\\Python\\lib\\site-packages',
  'C:\\hp\\bin\\Python\\lib\\site-packages\\win32',
  'C:\\hp\\bin\\Python\\lib\\site-packages\\win32\\lib',
  'C:\\hp\\bin\\Python\\lib\\site-packages\\Pythonwin']

 Server time:   Fri, 15 Feb 2013 21:04:10 +1100
 Error during template rendering

 In template C:\djcode\mysite\myapp\templates\myapp\detail.html, error at line 5
 u"'polls" is not a registered namespace
 1  <h1>{{ poll.question }}</h1>
 2  
 3  {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
 4  
 5  {% url 'polls:vote' poll.id %}
 6  {% csrf_token %}
 7  {% for choice in poll.choice_set.all %}
 8  <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
 9  <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
 10     {% endfor %}
 11     <input type="submit" value="Vote" />
 12     </form>

现在我知道问题隐藏在detail.html,我的主要网址和名为myapp URLCONF和views.py的应用程序中

现在我的主要URLconf是:C:\ djcode \ mysite \ mysite

 from django.conf.urls import patterns, include, url
 from django.contrib import admin
 from django.conf import settings
 # Uncomment the next two lines to enable the admin:
 # from django.contrib import admin
 admin.autodiscover()

 urlpatterns = patterns('',
     #url(r'^polls/', include('myapp.urls')),
     url(r'^polls/', include('myapp.urls', namespace='polls')),                   
     url(r'^admin/', include(admin.site.urls)),
 )

我的应用程序文件夹称为myapp,这是myapp URLconf:C:\ djcode \ mysite \ myapp

 from django.conf.urls import patterns, include, url
 from django.contrib import admin
 from django.conf import settings

 from django.conf.urls import patterns, include, url

 urlpatterns = patterns('myapp.views',
     url(r'^$', 'index'),
     url(r'^(?P<poll_id>\d+)/$', 'detail'),
     url(r'^(?P<poll_id>\d+)/results/$', 'results'),
     url(r'^(?P<poll_id>\d+)/vote/$', 'vote'),


)

我在myapp中的views.py是:

 from django.http import HttpResponse
 from myapp.models import Poll ,choice
 from django.template import Context, loader
 from django.http import Http404
 from django.shortcuts import render_to_response, get_object_or_404
 from django.template import RequestContext

 def index(request):
     latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
     return render_to_response('myapp/index.html', {'latest_poll_list': latest_poll_list})

 def results(request, poll_id):
     p = get_object_or_404(Poll, pk=poll_id)
     return render_to_response('myapp/results.html', {'poll': p})

 def vote(request, poll_id):
     p = get_object_or_404(Poll, pk=poll_id)
     try:
         selected_choice = p.choice_set.get(pk=request.POST['choice'])
     except (KeyError, Choice.DoesNotExist):
         # Redisplay the poll voting form.
         return render_to_response('myapp/detail.html', {
             'poll': p,
             'error_message': "You didn't select a choice.",
         }, context_instance=RequestContext(request))
     else:
         selected_choice.votes += 1
         selected_choice.save()
         # Always return an HttpResponseRedirect after successfully dealing
    # with POST data. This prevents data from being posted twice if a
         # user hits the Back button.
         return HttpResponseRedirect(reverse('myapp.views.results', args=(p.id,)))

 def detail(request, poll_id):
     p = get_object_or_404(Poll, pk=poll_id)
     return render_to_response('myapp/detail.html', {'poll': p},
                                context_instance=RequestContext(request))

我的detail.htmlC:\ djcode \ mysite \ myapp \ templates \ myapp

 <h1>{{ poll.question }}</h1>

 {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

 {% url 'polls:vote' poll.id %}
 {% csrf_token %}
 {% for choice in poll.choice_set.all %}
     <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
     <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
 {% endfor %}
 <input type="submit" value="Vote" />
 </form>
trans by 2020-07-05T19:43:12Z

在类内部定义的朋友函数的全限定名称是什么?

在类内部定义的朋友函数的完全限定名称是什么?

我最近看到了一个类似于以下内容的示例。 下面的val()的完全限定名称是什么?

#include <iostream>

namespace foo {
    class A {
        int x;
    public:
        A(int x = 0) : x(x) { }

        friend int val(const A &a) { return a.x; }
    };
}

int main() {
    foo::A a(42);

    // val() found using ADL:
    std::cout << val(a) << std::endl;

    // foo::val(a); // error: 'val' is not a member of 'foo'
    // foo::A::val(a); // error: 'val' is not a member of 'foo::A'

    return 0;   
}

是否可以找到val()依赖参数的查找?

诚然,这并非源于实际问题。 我只是想获得更好的理解。

trans by 2020-07-04T00:37:25Z

.net 4.0-C#4是否以以前的C#版本没有的方式优化了名称空间?

这个问题是出于兴趣。 我正在使用第三方库,并且在CMS.Security.Dummy类上遇到了以下文档:

不要删除该类-此类阻止编译器执行以下操作: 在.NET 4.0下删除整个命名空间。

是否有人知道或有人推测如果删除了伪类,.NET 4为什么会删除命名空间?

由于.NET 4是在源代码注释中显式命名的,因此我假定以前的C#版本表现出不需要此伪类的行为。 不过,这纯粹是猜测。

屏幕截图

documentation

反编译的源代码

#region Assembly CMS.SettingsProvider.dll, v4.0.30319
// ...\solution\wwwroot\Bin\CMS.SettingsProvider.dll
#endregion

using System;

namespace CMS.Security
{
    // Summary:
    //     DO NOT DELETE THIS CLASS - This class prevents the compiler from dropping
    //     entire namespace under .NET 4.0.
    public class Dummy
    {
        // Summary:
        //     DO NOT DELETE THIS CLASS - This class prevents the compiler from dropping
        //     entire namespace under .NET 4.0.
        public Dummy();
    }
}
trans by 2020-07-01T19:36:13Z

Kubernetes-在命名空间之间共享秘密

有没有一种方法可以在Kubernetes中的命名空间之间共享秘密?

我的用例是:我的所有名称空间都具有相同的私有注册表,并且我想避免为每个名称空间创建相同的秘密。

谢谢你的帮助。

trans by 2020-06-25T19:07:18Z

1 2 3 4 5 6 下一页 共6页