标签: qualified-name

为什么静态初始化块中不允许使用合格的静态最终变量?

情况1

class Program {
    static final int var;

    static {
        Program.var = 8;  // Compilation error
    }

    public static void main(String[] args) {
        int i;
        i = Program.var;
        System.out.println(Program.var);
    }
}
Run Code Online (Sandbox Code Playgroud)

案例2

class Program {
    static final int var;

    static {
        var = 8;  //OK
    }

    public static void main(String[] args) {
        System.out.println(Program.var);
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么案例1会导致编译错误?

java static final qualified-name static-initialization

52
推荐指数
2
解决办法
2053
查看次数

通过::调用包中的函数是一个好习惯吗?

我正在写使用一些有用的功能像其他一些包R里面的函数stringrbase64enc.是不是首先要调用library(...)或者require(...加载这些包,而是::用来直接引用我需要的函数,比如stringr::str_match(...)

在一般情况下这是一个好习惯吗?或者它会引起什么问题?

scope namespaces r scoping qualified-name

39
推荐指数
1
解决办法
8324
查看次数

如何在Haskell中编写符号的限定名称?

我想在两个不同的Haskell模块之间使用相同的中缀运算符(<*>)进行名称冲突.Haskell 98报告说

modid.varsym
Run Code Online (Sandbox Code Playgroud)

是允许的,但我不能让它工作.这里完整的是Test.hs:

module Test
where

import qualified Test2 as T

three = T.<*>
Run Code Online (Sandbox Code Playgroud)

并且Test2.hs:

module Test2
where
(<*>) = 3
Run Code Online (Sandbox Code Playgroud)

但是尝试编译结果会出现错误消息:

Test.hs:6:12: parse error on input `T.<*>'
Run Code Online (Sandbox Code Playgroud)

我尝试过,T.(<*>)但这也不起作用.

如何引用由导入的模块中定义的符号名称import qualified

syntax haskell identifier qualified-name

20
推荐指数
2
解决办法
3029
查看次数

Do Derived1::Base and Derived2::Base refer to the same type?

MSVC, Clang and GCC disagree on this code:

struct Base { int x; };
struct Der1 : public  Base {};
struct Der2 : public  Base {};

struct AllDer : public Der1, public Der2 {
    void foo() {
        Der1::Base::x = 5;
    }
};
Run Code Online (Sandbox Code Playgroud)

Godbolt

GCC:

<source>: In member function 'void AllDer::foo()':    
<source>:10:21: error: 'Base' is an ambiguous base of 'AllDer'    
   10 |         Der1::Base::x = 5;    
      |                     ^    
Compiler returned: 1
Run Code Online (Sandbox Code Playgroud)

Clang gives a similar error, and MSVC gives no error.

Who …

c++ multiple-inheritance qualified-name diamond-problem language-lawyer

15
推荐指数
2
解决办法
253
查看次数

脱机成员函数定义是否需要使用低于全球范围的完全限定的类名?

这个问题让我想知道在类外成员函数定义中完全限定类名(包括全局作用域运算符)是否有用/必需。

一方面,我以前从未见过这样做(正确执行的语法似乎还不清楚)。另一方面,C ++名称查找非常简单,因此可能存在极端情况。

题:

是否曾经有过引入超出成员函数定义的定义
ReturnType (::Fully::Qualified::Class::Name::MemberFunctionName)(...) { ... }
不同于
ReturnType Fully::Qualified::Class::Name::MemberFunctionName(...) { ... }(没有全局作用域::前缀)的情况?

请注意,成员函数定义必须放在封闭类的名称空间中,因此不是有效的示例。

c++ qualified-name global-scope name-lookup scope-resolution-operator

14
推荐指数
2
解决办法
365
查看次数

Haskell*限定*导入一组函数

在Haskell中,我可以导入一个由其名称或快捷方式名称限定的模块,如下所示:

import qualified Data.List as List
import qualified Data.Map
Run Code Online (Sandbox Code Playgroud)

我还可以从模块中仅导入一组选定的函数,或者导入除选择集以外的所有函数,如下所示:

import Data.List (sort, intersperse)
import Data.Map hiding (findWithDefault)
Run Code Online (Sandbox Code Playgroud)

是否可以导入一组特定的函数,import Data.List (sort, intersperse)如上例所示,但是要确保仍然以合格的方式识别函数,例如List.sortList.intersperse

虽然这不起作用,但这是我所要求的精神:

import qualified Data.List (sort, intersperse) as List
Run Code Online (Sandbox Code Playgroud)

也许

import qualified Data.List as List (sort, intersperse)
Run Code Online (Sandbox Code Playgroud)

import haskell qualified-name

13
推荐指数
3
解决办法
1974
查看次数

Java中的不合格名称

我们编程课程中的老师正在谈论"不合格的名字",但我想知道他们到底是什么.

我怀疑方法名称之类的东西是不合格的,但我不确定.

有没有人可以向我解释这个?我需要知道这一点,因为我需要解释Java看起来像一个不合格的名称.

java qualified-name unqualified-name

9
推荐指数
2
解决办法
3199
查看次数

使用using-directive进行不明确的名称查找

不允许将名称空间和具有相同名称的类放入一个声明性区域,即

namespace A {}
class A{};
Run Code Online (Sandbox Code Playgroud)

形成不良(见§3.3.1/ 4).但是,可以通过using-directive引入任一个的名称:

namespace N { namespace A {int i;} }

struct A {static int i;};

using namespace N;

int i = A::i; // The global struct, or namespace N::A?
Run Code Online (Sandbox Code Playgroud)

这段代码是不正确的吗?VC++ 和Clang一样认为:

main.cpp:7:9: error: reference to 'A' is ambiguous
int i = A::i;
        ^
main.cpp:3:8: note: candidate found by name lookup is 'A'
struct A {static int i;};
       ^
main.cpp:1:25: note: candidate found by name lookup is 'N::A'
namespace N …
Run Code Online (Sandbox Code Playgroud)

c++ qualified-name language-lawyer name-lookup

8
推荐指数
1
解决办法
1474
查看次数

在Java中,为什么可以用另一个枚举常量限定枚举常量?

最近,我注意到,有可能:

class Test {
    public enum Season { WINTER, SPRING, SUMMER, FALL }
    Season field = Season.WINTER.SPRING; // why is WINTER.SPRING possible?
}
Run Code Online (Sandbox Code Playgroud)

是否有一个原因?

java enums qualified-name

7
推荐指数
1
解决办法
296
查看次数

C++声明中的显式限定

当第一个声明被注释掉时,以下命名空间定义无法编译.如果第一个声明foo是取消注释的,那么它编译就好了.

namespace Y
{
    //void foo();
    void ::Y::foo(){}
}
Run Code Online (Sandbox Code Playgroud)

标准中的相关部分(§8.31)说:

当declarator-id被限定时,声明应引用先前声明的成员

据我所知,此规则可防止将名称引入其他名称空间.我想知道是否可以放宽该规则以允许引用当前命名空间的qualified-id.

c++ namespaces declaration qualified-name language-lawyer

6
推荐指数
1
解决办法
681
查看次数