小编use*_*016的帖子

如何在TypeScript中的派生类中进行构造函数重载?

假设我有一个'基础'类,如下所示:

class CcDefinition {
  // Some properties here

  constructor (json: string);
  constructor (someVar: number, someOtherVar: string);
  constructor (jsonOrSomeVar: any, someOtherVar?: string) {
    if (typeof jsonOrSomeVar=== "string") {
      // some JSON wrangling code here
    } else {
      // assign someVar and someOtherVar to the properties
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够扩展这个基类,同时仍然支持构造函数重载.例如:

class CcDerived extends CcDefinition {
  // Some additional properties here

  constructor (json: string);
  constructor (someVar: boolean, someOtherVar: number, someAdditionalVar: string);
  constructor (jsonOrSomeVar: any, someOtherVar?: number, someAdditionalVar?: string) {
    if (typeof jsonOrSomeVar=== "string") …
Run Code Online (Sandbox Code Playgroud)

inheritance constructor extends overloading typescript

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

可以在OpenCL中实现这种并行性

这是我的第一篇文章.我会尽量保持简短,因为我珍惜你的时间.这个社区对我来说太不可思议了.

我正在学习OpenCL,并希望从下面的算法中提取一些并行性.我只会告诉你我正在做的部分,我也尽可能简化了.

1)输入:两个长度为(n)的1D数组:A,B和n的值.还值C [0],D [0].

2)输出:两个长度为(n)的1D阵列:C,D.

C[i] = function1(C[i-1])
D[i] = function2(C[i-1],D[i-1])
Run Code Online (Sandbox Code Playgroud)

所以这些是递归定义,但是给定i值的C&D计算可以并行完成(它们显然更复杂,以便有意义).一个天真的想法是为以下内核创建两个工作项:

__kernel void test (__global float* A, __global float* B, __global float* C,
                    __global float* D, int n, float C0, float D0) {
    int i, j=get_global_id(0);

    if (j==0) {
       C[0] = C0;
       for (i=1;i<=n-1;i++) {
          C[i] = function1(C[i-1]);
          [WAIT FOR W.I. 1 TO FINISH CALCULATING D[i]];
       }
       return;
    }
    else {
       D[0] = D0;
       for (i=1;i<=n-1;i++) {
          D[i] = function2(C[i-1],D[i-1]);
          [WAIT FOR W.I. 0 TO FINISH CALCULATING C[i]]; …
Run Code Online (Sandbox Code Playgroud)

opencl barrier

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

如何在结构中强制执行合同

我想强制一个结构对于某个合同始终有效,由构造函数强制执行.但是,default运营商违反了合同.

请考虑以下情况,例如:

struct NonNullInteger
{
    private readonly int _value;

    public int Value
    {
        get { return _value; }
    }

    public NonNullInteger(int value)
    {
        if (value == 0)
        {
            throw new ArgumentOutOfRangeException("value");
        }

        _value = value;
    }
}

// Somewhere else:
var i = new NonNullInteger(0); // Will throw, contract respected
var j = default(NonNullInteger); // Will not throw, contract broken
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我将结构更改为类,因此我可以确保在初始化新实例时始终调用构造函数.但我想知道,是否绝对没有办法获得与结构相同的行为?

c# struct contract

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

64位原子添加到CUDA中

atomicAdd我在 CUDA 7 下使用时遇到问题。atomicAdd定义为“ int”、“ unsigned int”和“ unsigned long long int”,说明它使用“32 或 64 位值”。

为了安全起见,在我们的代码中我们使用uint32_tuint64_t。然而 gcc 是这样定义的:

#if __WORDSIZE == 64
typedef unsigned long int   uint64_t;
#else
__extension__
typedef unsigned long long int  uint64_t;
#endif
Run Code Online (Sandbox Code Playgroud)

因此,当我将 an 传递uint64_tatomicAdd它时,它会抱怨,因为它没有为“ unsigned long int”定义。

是否可以uint64_t == long long int按照编程指南中所述假设进行 CUDA 编译?

c++ types cuda atomic word-size

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

C++ 1z Coroutines语言功能?

为什么协程(现在在C++ 1z的最新草案中)被实现为核心语言功能(花哨的关键字和所有)而不是库扩展?

已经存在一些针对它们的实现(Boost.Coroutine等),其中一些可以与我所阅读的平台无关.为什么委员会决定将其融入核心语言本身?

我不是说他们不应该,但是Bjarne Stroustrup自己在一些谈话中提到过(不知道哪一个),应该尽可能在图书馆中实现新功能,而不是触及核心语言.

那么有充分的理由吗?有什么好处?

c++ coroutine language-extension c++17

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

在Java虚拟机上运行已编译的Scala文件

是否可以使用Java虚拟机运行scala文件?我尝试了很多,但没有任何作用.有人能用命令行给我一些帮助吗?非常感谢!

jvm scala

5
推荐指数
2
解决办法
4527
查看次数

防止本地指针

也许这是一个新手问题,但在C/C++中是否有一种方法可以阻止函数接受指向局部变量的指针?

考虑以下代码:

int* fun(void)
{
 int a;
 return &a;
}
Run Code Online (Sandbox Code Playgroud)

编译器将生成一个警告,指示无法返回指针.现在考虑一下:

int* g;

void save(int* a)
{
 g = a;
}

void bad(void)
{
 int a;
 save(&a);
}
Run Code Online (Sandbox Code Playgroud)

这将通过编译器而不会发出警告,这很糟糕.是否有某种属性或某些东西可以防止这种情况发生?就像这样:

void save(int __this_pointer_must_not_be_local__ * a)
{
 g = a;
}
Run Code Online (Sandbox Code Playgroud)

如果有人知道答案,请提前致谢

c pointers compiler-warnings

5
推荐指数
1
解决办法
137
查看次数

字符串的单元格数组 - 在Matlab中检查元素

在Matlab中,如果我有一个字符串的单元格数组,我该如何检查例如第3行和第1列是否等于某个给定的字符串,例如'ABC'

例如,myArray(3,1) == 'ABC'给我一个错误:

未定义的运算符'=='表示'cell'类型的输入参数.


如果myArray(3,1)=='ABC',则错误在cw14(第19行)

arrays matlab cell

5
推荐指数
1
解决办法
8308
查看次数

为什么要区分通用算法的谓词和非谓词版本?

标准库确实区分了通用算法的谓词和非谓词版本.例如,std::sort()看起来像:

template< class RandomIt >
void sort( RandomIt first, RandomIt last );

template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp );
Run Code Online (Sandbox Code Playgroud)

写下面的内容有什么问题吗?

template< class RandomIt, class Compare = std::less<void>>
void sort( RandomIt first, RandomIt last, Compare comp = Compare{});
Run Code Online (Sandbox Code Playgroud)

c++ generic-programming c++-standard-library language-lawyer c++14

5
推荐指数
1
解决办法
114
查看次数

处所的顺序

如何更改规则中的前提顺序?例如,在伊莎贝尔的自然演绎规则中:

mp: ?P ? ?Q ? ?P ? ?Q
Run Code Online (Sandbox Code Playgroud)

我们可以将订单更改为:

?P ? ?P ? ?Q ? ?Q
Run Code Online (Sandbox Code Playgroud)

我可以使用rev_mp或定义一个新的引理,但我要找的是是否有一个定理修饰符改变了前提的顺序.

isabelle

5
推荐指数
1
解决办法
109
查看次数