我正在尝试URLSession在 Swift 中创建一个子类(原因无关紧要,但与测试有关)。我需要它与 adelegate和特定的 一起使用URLSessionConfiguration,这是 上的只读属性URLSession。URLSession使用委托进行初始化的通常方法是使用以下代码完成的,它可以完美地工作:
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) 我开始学习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)
谢谢!
有时在 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)
解决此问题的解决方案是什么?
我正在尝试将谷歌地图集成到我的应用程序中,并为其提供放置标记的源和目的地。这几天一直正常运行,没有出现任何错误。今天突然出现此错误,并且地图无法正常工作。即使它没有在屏幕上显示谷歌地图,只是空白的白色屏幕。
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) 我必须做一些非常愚蠢的事情,但是当我尝试在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) 我正在尝试使用一种被广泛报道为在这里工作的技术.我想添加一个站点范围的自定义日期格式,为了做到这一点,我将以下几行放入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)
我错过了什么细节?
我正在尝试使用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) 之前我在同一代码的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) 我遇到了一些与此类似的代码:
struct Struct
{
int a;
int b;
};
int main()
{
struct Struct variable = { }; // ???
variable.a = 4;
variable.b = 6;
}
Run Code Online (Sandbox Code Playgroud)
这很奇怪.初始化a和b可能在初始化器中发生(在花括号之间).但他们不是.保持这个= { }部分有什么意义?以下应该没问题吧?
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) 我想在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)
它无需设置种子值即可很好地工作。
如何设置种子值?
initializer ×10
struct ×3
c ×2
static ×2
swift ×2
c# ×1
c++ ×1
exception ×1
flutter ×1
google-maps ×1
inheritance ×1
java ×1
keras ×1
kernel ×1
list ×1
seed ×1
singleton ×1
tensorflow ×1
urlsession ×1