标签: initializer

Swift 中 URLSession 的子类化工厂方法

我正在尝试URLSession在 Swift 中创建一个子类(原因无关紧要,但与测试有关)。我需要它与 adelegate和特定的 一起使用URLSessionConfiguration,这是 上的只读属性URLSessionURLSession使用委托进行初始化的通常方法是使用以下代码完成的,它可以完美地工作:

let session = URLSession(configuration: URLSessionConfiguration.default, delegate: nil, delegateQueue: nil)
Run Code Online (Sandbox Code Playgroud)

现在让我们创建一个子类:

class MyURLSession : URLSession {}

let session = MyURLSession(configuration: 
URLSessionConfiguration.default, delegate: nil, delegateQueue: nil) // Compile error
Run Code Online (Sandbox Code Playgroud)

初始化程序触发下一个编译错误:

error: argument passed to call that takes no arguments

根据 Swift Language Guide rule 1 for Automatic Initializer Inheritance

If your subclass doesn’t define any designated initializers, it 
automatically inherits all of its superclass designated …
Run Code Online (Sandbox Code Playgroud)

inheritance initializer factory-method swift urlsession

2
推荐指数
1
解决办法
1031
查看次数

初始化结构指针的值

我开始学习cpp中的二叉树并动态分配内存; 因此初始化一个结构我这样做

struct node{
    int val;
    node* left;
    node* right;
};
//Initialize:
node* root = new node;
root->val = 7;
root->left = NULL;
root->right = NULL;
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更好的方法来设置struct值而不编写最后三行代码.我在一些网页上看到他们这样做:

int* n = new int(6);
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ struct initializer

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

在便利初始值设定项中使用 `self =` 委托给 JSONDecoder 或 Swift 中的工厂方法,以避免 `Cannotassign to value: 'self' is immutable`

有时在 Swift 中,为委托JSONDecoder或工厂方法的类编写初始化程序可能会很方便。例如,一个人可能想写

final class Test: Codable {
    let foo: Int
    
    init(foo: Int) {
        self.foo = foo
    }
    
    func jsonData() throws -> Data {
        try JSONEncoder().encode(self)
    }
    
    convenience init(fromJSON data: Data) throws {
        self = try JSONDecoder().decode(Self.self, from: data)
    }
}

let test = Test(foo: 42)
let data = try test.jsonData()
let decodedTest = try Test(fromJSON: data)
print(decodedTest.foo)
Run Code Online (Sandbox Code Playgroud)

但这无法编译

Cannot assign to value: 'self' is immutable.
Run Code Online (Sandbox Code Playgroud)

解决此问题的解决方案是什么?

initializer swift

2
推荐指数
1
解决办法
48
查看次数

LateInitializationError:字段“mapController”尚未初始化

我正在尝试将谷歌地图集成到我的应用程序中,并为其提供放置标记的源和目的地。这几天一直正常运行,没有出现任何错误。今天突然出现此错误,并且地图无法正常工作。即使它没有在屏幕上显示谷歌地图,只是空白的白色屏幕。

class MapView extends StatefulWidget {
  @override
  _MapViewState createState() => _MapViewState();
}

class _MapViewState extends State<MapView> {
  CameraPosition _initialLocation = CameraPosition(target: LatLng(0.0, 0.0));
  **late GoogleMapController mapController ;**

  late Position _currentPosition;
  String _currentAddress = '';

  final startAddressController = TextEditingController();
  final destinationAddressController = TextEditingController();

  final startAddressFocusNode = FocusNode();
  final destinationAddressFocusNode = FocusNode();

  String _startAddress = '';
  String _destinationAddress = '';
  double? _placeDistance;

  Set<Marker> markers = {};

  late PolylinePoints polylinePoints;
  List<LatLng> polylineCoordinates = [];
  Map<PolylineId, Polyline> polylines = {};

  final _scaffoldKey = GlobalKey<ScaffoldState>(); …
Run Code Online (Sandbox Code Playgroud)

google-maps initialization initializer flutter

2
推荐指数
1
解决办法
6335
查看次数

在Simple Singleton实例中获取ExceptionInInitializerError

我必须做一些非常愚蠢的事情,但是当我尝试在Singleton中实例化一个对象时,我得到一个ExceptionInInitializerError:

class MySingleton {

  private static MySingleton instance = null;
  private OtherObject obj;

  // Do I instantiate obj here???
  private MySingleton() {
    //obj = new OtherObject();
  }

  // Or here?
  {
    //obj = new OtherObject();
  }

  // Or where? ...

  public static MySingleton getInstance() {
    if (instance == null)
      instance = new MySingleton();
    return instance;
  }

}
Run Code Online (Sandbox Code Playgroud)

我应该在构造函数中创建另一个对象,还是对于单例来说总是应该为空?我在构造函数和初始化程序块中都得到了异常......

这是main():

public static void main(String[] args) {
    try {
        MySingleton singleton = MySingleton.getInstance();
    } catch (Error e) {
        System.err.println("Error!");
    }
}
Run Code Online (Sandbox Code Playgroud)

java singleton static exception initializer

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

Rails DATE_FORMATS初始化程序导致错误

我正在尝试使用一种被广泛报道为在这里工作的技术.我想添加一个站点范围的自定义日期格式,为了做到这一点,我将以下几行放入config/initializers/date_formats.rb:

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
  :verbose => lambda { |time| time.strftime(
                       "%a, %b #{time.day.ordinalize}, %Y %I:%M %p") 
                     }
)
Run Code Online (Sandbox Code Playgroud)

请注意,这是该文件的全部内容.在初始化时,我收到此错误:

/whatever/config/initializers/date_formats.rb:4:in `<top (required)>': uninitialized constant ActiveSupport::CoreExtensions (NameError)
Run Code Online (Sandbox Code Playgroud)

我错过了什么细节?

ruby-on-rails initializer ruby-on-rails-3

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

C错误中的链接列表 - Initalizer错误无效

我正在尝试使用C(NOT C++)创建链接列表.链接列表通过函数llinit()初始化,该函数应该返回一个列表结构.但是,当我编译代码时,我在lltester.c文件中收到一条错误,指出"错误:无效的初始化程序".为什么是这样?

这是用于初始化llist.c文件中链表的函数:

list llinit()
{
    list* ll = malloc(sizeof(list));
    ll->head = NULL;
    ll->tail = NULL;
    return *ll;
}
Run Code Online (Sandbox Code Playgroud)

这是我的llist.h文件中的list结构:

typedef struct {
    node *head;
    node *tail;
} list;
Run Code Online (Sandbox Code Playgroud)

这是我在lltester.c文件中的主要功能,我尝试初始化列表:

int main()
{
    list myList= llinit(); //This is the line where the error occurs on!

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c struct list initializer

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

一个不应该运行的静态初始化程序

之前我在同一代码的Debug和Release版本之间发布了一个关于静态初始化器和不同输出的问题.我确定Release版本从Debug构建产生了不同的输出(实际上它没有产生输出),因为一个DebuggableAttribute设置允许JIT优化器消除Release版本中的输出.

我想的越多,它就越困扰我.在我进一步讨论之前,让我展示我原始发布的代码和Debug构建中产生的输出:

 using System;

 class Test {
    static int value = 0;
    static int a = Initialize("Assigning a");
    static int b = Initialize("Assigning b");
    static String name = "Fred";
    static int c = Initialize("Assigning c");

    static int Initialize(String mssg) {
       ++value;
       Console.WriteLine("In Initialize() :: {0}, name={1}, returning {2}", mssg, name, value);
       return value;
    } // Initialize()

    static void Main() {
    }// Main()
 } // class Test
Run Code Online (Sandbox Code Playgroud)

此代码的输出(当使用Debug构建运行时)是这样的:

In Initialize() :: Assigning a, …
Run Code Online (Sandbox Code Playgroud)

c# static initializer

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

空的初始化器和结构体的初始化器之间有什么区别?

我遇到了一些与此类似的代码:

struct Struct
{
    int a;
    int b;
};

int main()
{
    struct Struct variable = { };   // ???
    variable.a = 4;
    variable.b = 6;
}
Run Code Online (Sandbox Code Playgroud)

这很奇怪.初始化ab可能在初始化器中发生(在花括号之间).但他们不是.保持这个= { }部分有什么意义?以下应该没问题吧?

struct Struct variable;
Run Code Online (Sandbox Code Playgroud)

或者是吗?是否有一个空的初始化器与任何不具有初始化器的方式不同?

我的小C手册说明了这一点

对于没有初始化器的变量:具有静态作用域的所有变量都隐式初始化为零(即所有字节= 0).所有其他变量都有未定义的值!

需要注意的是,这并没有明确提到structs. 什么时候没有初始化的条件满足了struct我做了以下测试:

#include <stdio.h>

struct Struct
{
    int a;
    int b;
};

int main()
{
    struct Struct foo = { };
    foo.a = 4;

    struct Struct bar; …
Run Code Online (Sandbox Code Playgroud)

c struct initializer

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

如何在Keras中设置内核初始化程序(glorot_uniform)的种子值

我想在Keras中设置glorot_uniform内核初始化程序的种子值。

model.add(Dense(50, input_dim=self.state_size, activation='relu', kernel_initializer='glorot_uniform(seed=0)'))
Run Code Online (Sandbox Code Playgroud)

当我使用以上代码时,错误消息如下。

ValueError: Unknown initializer: glorot_uniform(seed=0)
Run Code Online (Sandbox Code Playgroud)

如果我删除“(seed = 0)”,如下所示

 model.add(Dense(50, input_dim=self.state_size, activation='relu', kernel_initializer='glorot_uniform'))
Run Code Online (Sandbox Code Playgroud)

它无需设置种子值即可很好地工作。

如何设置种子值?

kernel initializer seed keras tensorflow

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