标签: initializer

为什么初始化程序不能使用返回list <t>的属性?

找不到这个问题的答案.它必须是显而易见的,但仍然是.

我尝试在这个简化的例子中使用初始化器:

    MyNode newNode = new MyNode 
    {
        NodeName = "newNode",
        Children.Add(/*smth*/) // mistake is here
    };
Run Code Online (Sandbox Code Playgroud)

其中Children是此类的属性,它返回一个列表.在这里,我遇到了一个错误,就像'无效的初始化成员声明符'.

这里有什么问题,你如何初始化这些属性?非常感谢提前!

.net c# initializer

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

基于Select语句声明表变量

我想声明一个表变量并用select填充它,而不必显式定义它的列.T-SQL是否允许这样的事情:

DECLARE @people TABLE() SELECT * FROM Persons;
Run Code Online (Sandbox Code Playgroud)

假设上述语句与列类型相同,并同时填充@people表变量.:)

t-sql sql-server initializer

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

什么时候课程会有多个指定的初始化程序?

通过Apple 关于框架开发人员的技巧和技巧的文档阅读,我发现了关于指定初始化器的声明:

指定的初始值设定项是调用init超类方法的类的init方法 .(其他初始值设定项调用init 类定义的方法.)每个公共类都应该有一个或多个指定的初始值设定项.

(重点补充.)

基于我的理解 - 实际上,"指定"一词的使用 - 一个类应该只有一个指定的初始化器.但根据文档,可以接受多个指定的初始化程序.

假设您有两个(或更多)指定的初始值设定项,它们的作用是调用超类的指定初始值设定项,以保证正确的对象初始化.但是如果两个指定的初始值设定项都在调用同一个超类的指定初始化程序,那么为什么首先需要多个指定的初始化程序呢?不应该重构该类以将所有其他init方法汇集到单个指定的初始化器中吗?

关于什么用例或设计模式会调用多个指定的初始化器,我有点困惑?

cocoa cocoa-touch initializer cocoa-design-patterns ios

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

为什么委托必须是静态的?

在下面的代码中,我必须声明方法,MdrResponseInterpreter static否则我有编译错误.

class.... {

    private StandardBuilder _mdrResponseBuilder = 
      new StandardBuilder(MdrResponseInterpreter);

    public static bool MdrResponseInterpreter(DNMessageDeliverer builder, 
                                              DNFieldSet message)
    {
        // .... work
    }
Run Code Online (Sandbox Code Playgroud)

为什么?由于_mdrResponseBuilder不是静态的,我希望MdrResponseInterpreter应该能够访问this

c# delegates initializer method-group

8
推荐指数
2
解决办法
1014
查看次数

在创建Python类时调用类方法

我想在类创建时自动运行一些可以调用其他类方法的代码.我没有在类声明本身中找到这样做的方法,并最终创建一个@classmethod被调用__clsinit__并在类声明后立即从定义范围调用它.是否有一个我可以定义的方法,以便在创建类对象后自动调用它?

python initializer class-method

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

如何在C中用malloc初始化静态指针?

我正在尝试在C中使用malloc启动静态变量(在函数内),但我得到的是"初始化程序不是常量错误".我知道我不能在C中用非常量启动静态,但是有人能想到一个解决方案吗?我需要代码具有与此相同的效果:

static int *p = (int *)malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)

有诀窍/解决方法吗?

编辑:我有一个函数,每次标志变高时调用.在这个函数中,我正在创建并启动一个新线程.我声明了一个指向结构的指针,并使用malloc分配内存,然后将此指针传递给线程.然后该函数返回控制.当我重新进入该函数时,我最初打开的线程仍将运行,我希望能够访问我最初传递给线程的内存区域.这就是为什么我需要一个静态,以便我可以在第一次调用时使用malloc,然后在后续调用中使用相同的地址.这样我就可以从线程中获取信息.这一切都是为了避免使用全局变量.

c malloc static constants initializer

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

我可以将隐式初始化重载为0吗?

是否可以编写一个类,使其有效:

Foo a;
Foo b = 0;
Foo c = b;
Foo d(0);
Foo e(1);
Foo f = Foo(1);
Run Code Online (Sandbox Code Playgroud)

但这些不是:

int x;
Foo a = x;
Foo b = 1;
Foo c = 2;
//etc
Run Code Online (Sandbox Code Playgroud)

从本质上讲,我的规则是"一个常量0可以隐式转换为a Foo,但没有其他值"

c++ constructor initializer explicit-constructor

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

在Swift中对MKCircle进行子类化

我想通过添加另一个String属性来子类化MKCircle(例如MyCircle),让我们称之为" code".这个属性不是可选的和常量的,所以我必须从初始化器设置它,对吧?当然MyCircle还应该得到中心坐标和半径.这两个属性是只读的,所以我还需要通过初始化程序设置它们.

最后,我需要一个初始化的是需要3个参数:coordinate,radiuscode.听起来很简单但Swifts指定和便利的initalizers及其规则让我很难在这里.

问题是MKCircle:

class MKCircle : MKShape, MKOverlay, MKAnnotation, NSObjectProtocol {

    convenience init(centerCoordinate coord: CLLocationCoordinate2D, radius: CLLocationDistance)

    convenience init(mapRect: MKMapRect) // radius will be determined from MAX(width, height)

    var coordinate: CLLocationCoordinate2D { get }
    var radius: CLLocationDistance { get }

    var boundingMapRect: MKMapRect { get }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的初始化的MKCircle那个需要coordinateradius是一个方便initalizer,因此没有从我的子类的初始化调用.此属性也是只读的,因此我无法从子类的初始化程序或外部设置它们.

我尝试了很多变化,但似乎唯一可行的方法是使我的code属性成为可选,使用继承的便利初始化器来设置坐标和半径,然后设置代码属性,如下所示:

class MyCircle: MKCircle {
    var code: String? …
Run Code Online (Sandbox Code Playgroud)

inheritance initializer mapkit ios swift

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

如何在Rust中默认初始化包含数组的结构?

声明包含数组的结构,然后创建零初始化实例的推荐方法是什么?

这是结构:

#[derive(Default)]
struct Histogram {
    sum: u32,
    bins: [u32; 256],
}
Run Code Online (Sandbox Code Playgroud)

和编译器错误:

error[E0277]: the trait bound `[u32; 256]: std::default::Default` is not satisfied
 --> src/lib.rs:4:5
  |
4 |     bins: [u32; 256],
  |     ^^^^^^^^^^^^^^^^ the trait `std::default::Default` is not implemented for `[u32; 256]`
  |
  = help: the following implementations were found:
            <[T; 14] as std::default::Default>
            <&'a [T] as std::default::Default>
            <[T; 22] as std::default::Default>
            <[T; 7] as std::default::Default>
          and 31 others
  = note: required by `std::default::Default::default`
Run Code Online (Sandbox Code Playgroud)

如果我尝试为数组添加缺少的初始值设定项:

impl Default for [u32; 256] …
Run Code Online (Sandbox Code Playgroud)

arrays struct initializer rust

8
推荐指数
2
解决办法
7603
查看次数

char c [2] = {[1] = 7}是什么; 做?

我正在阅读Bruce Dawson关于将Chromium移植到VC 2015的文章,他遇到了一些我不理解的C代码.

代码是:

char c[2] = { [1] = 7 };
Run Code Online (Sandbox Code Playgroud)

Bruce对它的唯一评论是:"我不熟悉所使用的数组初始化语法 - 我认为它是一些只有C的构造." 那么这个语法究竟意味着什么呢?

c arrays initializer

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