标签: ambiguity

您如何解决规范中的含糊之处?

我需要一些关于如何解决应用程序规范中的歧义的建议.举个简单的例子,

如果用户多次无法进行身份验证,请向IT发送通知.

在上面的例子中,不清楚"多次"是多少次.目前尚不清楚,我不能简单地设置1000次随机限制.

您将如何解决任何规格中不清楚的部分?(不只是我提到的那个)

此外,我应该在Google上搜索哪些主题或针对这类情况的书籍?软件工程?敏捷开发?我不知道从哪里开始.

任何有用的知识和技巧将不胜感激.

specifications ambiguity

6
推荐指数
2
解决办法
2641
查看次数

函数重载的歧义-整数与双精度

假设我希望有2个函数,一个函数在给定范围内生成一个随机整数,另一个函数在给定范围内生成一个随机双精度数。

int GetRandomNumber( int min, int max );
double GetRandomNumber( double min, double max );
Run Code Online (Sandbox Code Playgroud)

请注意,方法名称相同。我正在尝试决定是命名功能还是...

int GetRandomInteger( int min, int max );
double GetRandomDouble( double min, double max );
Run Code Online (Sandbox Code Playgroud)

第一种选择的好处是用户不必担心他们正在呼叫哪个。他们可以只使用整数或双精度值调用GetRandomNumber并获得结果。

The second option is more explicit in the names, but it reveals unneeded information to the caller.

I know this is petty, but I care about petty things.

Edit: How would C++ behave regarding implicit conversion.

Example:

GetRandomNumber( 1, 1 ); 
Run Code Online (Sandbox Code Playgroud)

This could be implicitly converted for the GetRandomNumber …

ambiguity

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

等价的隐含算子:它们为什么合法?

更新!

请参阅我对以下C#规范的一部分的剖析; 我想我必须遗漏一些东西,因为对我而言,我在这个问题中描述的行为实际上违反了规范.

更新2!

好的,经过进一步的反思,并根据一些评论,我想我现在明白发生了什么.规范中的"源类型"一词指的是从中转换的类型- 即,Type2在我下面的例子中 - 这只是意味着编译器能够将候选缩小到两个定义的运算符(因为Type2它是源类型)对彼此而言).但是,它无法进一步缩小选择范围.所以规范中的关键词(适用于这个问题)是"源类型",我之前误解(我认为)是指"声明类型".


原始问题

说我定义了这些类型:

class Type0
{
    public string Value { get; private set; }

    public Type0(string value)
    {
        Value = value;
    }
}

class Type1 : Type0
{
    public Type1(string value) : base(value) { }

    public static implicit operator Type1(Type2 other)
    {
        return new Type1("Converted using Type1's operator.");
    }
}

class Type2 : Type0
{
    public Type2(string value) : base(value) { }

    public …
Run Code Online (Sandbox Code Playgroud)

.net c# implicit ambiguity implicit-conversion

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

数字比较中的歧义(C中)?

我对C语言编程并不太熟悉(我只用语言做了一些小项目),然而,我的教授说了一些关于它的行为,这让我有些困惑.

他说的是这段代码有时根本不打印任何东西(我完全复制了板上的内容,我相信这是C的伪代码,因为"print"不在C中):

    int a = ___________;
    int b = ___________;

    if (a < b)
   print (“<“);
    if (a > b)
   print (“>”);
    if (a==b)
   print(“=”);
Run Code Online (Sandbox Code Playgroud)

基本上,你可以在那些没有满足这些条件的int变量中存储一些东西(_ __ _显然不是真正的代码,它只表示存在某些东西).它不一定需要一些填充那些空白的int数字......它可能是世界上的任何东西(并且可能存在在此代码之前发生的事情).

什么能填补这些空白,不会产生任何结果,为什么?

ps - 它与溢出,未定义的行为,超出范围的错误或类似的东西有关

pps - 我很难相信这位教授是错的.他比任何我接触过的人都更了解编程.我确信在某些情况下这是真的.

c int comparison ambiguity

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

D中的模糊结构构造函数

我在理解如何处理D中构造函数的模糊性方面遇到了一些麻烦.

struct mydta {
    int a = 2;
    int b = 3;

    this(int c) {
        a = c / 2;
        b = c * 2;
    }
    this(float c) {
        a = cast(int) c / 2;
        b = cast(int) c * 2;
    }

    static mydta afvec = mydta(4.3);
    static mydta aivec = mydta(5);
}
Run Code Online (Sandbox Code Playgroud)
  • afvec 数据值为2和8.
  • aivec 具有数据值5和3.

这意味着从语法中按预期afvec调用this(float c).

但是aivec做了类似的任务aivec.a = 5.

我在此推断,发现以下内容是合法的:分别aivec = mydta(5, 4);给出aivec值5和4.

任何想法如何绕过这个隐式初始化,以便我可以访问我的构造函数:this(int …

constructor struct d initialization ambiguity

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

为什么C++将此视为模糊函数引用

为什么我的编译器会将以下GetLength函数指针看作不明确的
伪代码:

size_t GetLength(char*);
size_t GetLength(wchar_t*);
struct ITEM { };
double GetLength(ITEM*);

CString GetInfo(ITEM * item, std::function<double (ITEM*)> fn)
{
  ... omitted for clarity
}

ITEM * item = new ITEM;
cout << GetInfo(item, GetLength);  // <- ambiguous error
Run Code Online (Sandbox Code Playgroud)

GetInfo只允许双返回+ ITEM*参数模式.那么为什么考虑(而不是丢弃)GetLength的两个基于字符串的变体呢?

c++ ambiguity visual-studio-2010 c++-standard-library

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

JBehave暧昧的一步

说我有:

@Given("first name is $firstName")
@Given("first name is $firstName and last name is $lastName")
Run Code Online (Sandbox Code Playgroud)

以下步骤将标记为含糊不清:

Given first name is John and last name is Smith
Run Code Online (Sandbox Code Playgroud)

如果不使用引号括起第一个参数,我该如何修复此步骤以使其仅匹配第二个参数?使用引号分别围绕这两个参数也具有相同的模糊性问题.

每个参数的长度是否有限制?是否有某些字符无法传入?

java ambiguity jbehave

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

使用Action <T>参数重载调用不明确的方法

我在调用具有不同Action<T>变体的重载方法时遇到了一些意外的编译器行为.

假设我有这个类Test,我在CallTest构造函数中创建它的实例.

public class Test
{
    public Test(Action<long> arg)
    {

    }

    public Test(Action<decimal> arg)
    {

    }
}

public class CallTest
{
    public CallTest()
    {
        Test t = new Test(TestDecimal);
    }

    public void TestDecimal(decimal arg)
    {

    }

    public void TestLong(long arg)
    {

    }    
}
Run Code Online (Sandbox Code Playgroud)

Test使用TestDecimalTestLong作为参数调用构造函数时,我收到以下错误:

以下方法或属性之间的调用不明确:' Test(System.Action<long>)'和' Test(System.Action<decimal>)'

我的猜测是有一些隐式转换之间正在进行的longdecimal,但没有任何人有任何其他想法可能我做错?有没有解决方法?

c# ambiguity overload-resolution

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

由多重继承引起的C++中复制构造函数的模糊调用

我遇到某个任务的问题,这是一个练习,而不是一个真正的程序.任务是定义结构D的复制构造函数,其行为方式与compliler生成的复制构造函数完全相同.

class Ob{
};

struct A {
Ob a;
};

struct B : A {
Ob b;
};

struct C : A, B {
Ob c;
};

struct D : C, A {
Ob d;
};
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,结构A在D结构中间接导出几次导致复制构造函数定义模糊不清的原因如下:

D(const D& _d) : C(_d), A(_d), d(_d.d) {}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何正确定义该复制构造函数?没有上面提到的定义的代码编译,所以它似乎应该是可能的.

MinGW 4.8.1错误消息:

zad3.cpp:12:8: warning: direct base 'A' inaccessible in 'C' due to ambiguity     [enabled by default]
 struct C : A, B {
        ^
zad3.cpp:16:8: warning: direct base 'A' inaccessible in 'D' due to ambiguity …
Run Code Online (Sandbox Code Playgroud)

c++ multiple-inheritance ambiguity copy-constructor ambiguous

6
推荐指数
2
解决办法
2046
查看次数

这个Java方法调用的歧义在哪里?

我得到一个"引用make is ambiguous"编译错误,我不明白.

我有这两种方法

public static <T> T make(String name, Class<T> parentClass, 
                         boolean rethrowRuntimeExceptions, 
                         Object... params) throws DLException

 public static <T> T make(String name, Class<T> parentClass,
                          Object... params) throws DLException
Run Code Online (Sandbox Code Playgroud)

这行代码被标记为含糊不清

  String className = "clsNme";
  String one = "1";
  String two = "2";     
  SimpleFactory.make(className, Object.class, false, one, two);
Run Code Online (Sandbox Code Playgroud)

这是错误

both method <T#1>make(String,Class<T#1>,boolean,Object...) in SimpleFactory and method <T#2>make(String,Class<T#2>,Object...) in SimpleFactory match
    [javac]   where T#1,T#2 are type-variables:
    [javac]     T#1 extends Object declared in method <T#1>make(String,Class<T#1>,boolean,Object...)
    [javac]     T#2 extends Object declared in method …
Run Code Online (Sandbox Code Playgroud)

java ambiguity variadic-functions mockito powermock

6
推荐指数
2
解决办法
984
查看次数