问题标签 [object-construction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - Swift:基于协议的类型构造
我正在尝试在 Swift 中创建一个可用于对象构造的协议。我遇到的问题是我需要存储类型信息,以便以后可以构造类型并在回调中返回。我似乎找不到一种方法来存储它而不会导致编译器崩溃或产生构建错误。这是基础知识(一个人为但有效的示例):
我们有一个简单的协议,它声明了一个init
(用于构造)和另一个 func printValues()
(用于测试)。我们还定义了一个结构,我们可以使用它来存储类型信息和一个回调,以便在构造新类型时返回它。
接下来我们创建一个构造函数:
需要注意的几件事:这会导致编译器崩溃。由于某种原因,它无法弄清楚这一点。问题似乎是var callbacks: [Request<Model>] = []
。如果我注释掉其他所有内容,编译器仍然会崩溃。注释掉 var 回调并且编译器停止崩溃。
此外,func construct
工作正常。但它不存储类型信息,所以它对我来说不是那么有用。我放在那里进行演示。
我发现如果我从 Request struct: 中删除协议要求,我可以防止编译器崩溃struct Request<T>
。在这种情况下,一切正常并编译,但我仍然需要let model = request.returnType(values: ["value1", "value2"])
在func next()
. 这也导致编译器崩溃。
这是一个使用示例:
有谁知道我如何将类型信息存储在特定协议中,以便以后可以动态构造并在回调中返回?
java - 如何以优雅的方式初始化具有大量字段的类?
在我的应用程序中,我必须实例化许多不同类型的对象。每种类型都包含一些字段,需要添加到包含类型中。我怎样才能以优雅的方式做到这一点?
我当前的初始化步骤如下所示:
new Offer()
我真的很想避免编写这样的代码,因为必须分别实例化每个对象然后跨多行代码初始化每个字段(例如必须调用thensetHotelOnly(hotelOnly)
和 then )有点麻烦add(offer)
。
我可以使用哪些优雅的方法来代替我拥有的方法?有没有Factories
可以用的“”?您是否有任何参考/示例来避免编写这样的代码?
我真的对实现干净的代码很感兴趣。
语境:
我正在开发一个RestClient
向 Web 服务发送发布请求的应用程序。
API 表示为一个xsd schema
文件,我创建了所有对象JAXB
在发送请求之前,我必须实例化许多对象,因为它们相互依赖。 (Offer 有 Hotels,Hotel 有 Rooms,Room 有 Persons……而这些 Classes 是生成的)
谢谢你的帮助。
c++ - 在容器中使用新位置
我刚刚在 C++ 中遇到了一些容器实现。该类使用内部缓冲区来管理其对象。这是一个没有安全检查的简化版本:
AFAIK ,如果/未自定义,这将E
冗余地构造/破坏对象。这似乎很危险。Container()
~Container()
new
delete
new
是否以最佳方式使用放置Add()
来防止危险的冗余构造函数/析构函数调用(除了将类绑定到功能齐全的池)?
使用放置new
时,new char[sizeof(E)*100]
分配缓冲区的正确方法是什么?
c++ - C++中的对象创建和销毁顺序
我编写了一个简单的程序来了解更多关于在 C++ 中创建和销毁对象的顺序(使用 Visual Studio 2015)。这里是:
输出让我有点吃惊(a1
s):
为了了解更多关于正在发生的事情,我添加了有关对象实例的信息:
结果更令人惊讶:
即,为什么a1
构造函数只调用一次,而析构函数调用了3 次?我是a
按值传递的,所以显然至少创建了 1 个临时对象,但请向我解释创建和销毁实例的时间和数量? A
c++ - 如果在一行中声明了两个对象,它们的构造顺序是什么?
假设一个类被定义为
现在我正在创建两个对象
以什么顺序创建a
和b
创建?它是由标准定义的吗?
c++ - 函数调用中的堆栈对象何时构造?
假设我有一个简单的功能:
如果我用 调用该函数val == 0
,是否构造了 stringstream 对象 ss ?我怀疑不是,但只是想确认一下。
c# - 如果实例已经存在,是否会忽略通用列表构造?
我有这个代码:
Resharper 将其标记为问题,建议“用相应的分支替换 'if' 语句”如果我默认,上面的代码将更改为:
然而,似乎 R# 通常更像是“猫”的腰带和吊带类型,敦促我在引用它之前总是检查某些东西是否为空。那么,这种表面上鲁莽的行为真的只是效率问题吗?IOW,“new List<>”是否仅在 istance 变量 (_priceComplianceSummaryList) 为空时才生成新列表,而无需明确检查?
c++ - 从 (const) *this 推导出的类型用作模板函数模板参数
我有简单的课程:
但是当我尝试从 *this 中推断出 operator+ 类型时,我得到了我没想到的奇怪错误:
错误:
如果我是对的,make(...)
应该创建新对象(应该没有 cv),那么为什么我会discards qualifiers [-fpermissive]
出错?
java - 在使用前启动最终变量需求的真正原因是什么
我知道:
一个空白的最终类变量必须由声明它的类的静态初始化程序明确分配,否则会发生编译时错误。
必须在声明它的类的每个构造函数的末尾明确分配一个空白的最终实例变量,否则会发生编译时错误。
为什么最终变量不能在任何时候只分配一次,而不仅仅是在声明时?
javascript - 为什么用构造函数创建对象在javascript中执行对象的方法?
假设我想要三个类型的对象Room
。这三个对象将bedroom
是livingroom
和bathroom
。Room
有两个属性length
和breadth
,和一个方法myFunc
。我使用构造函数方法来创建三个必需的对象:
问题是,当我运行此脚本myFunc
时,会执行三次,显示警报。我的想法是,由于new
关键字将函数转换为对象,因此它不能执行该对象的方法——typeof new Room
返回"object"
。
我的问题是:
如果该语句
new Room();
将Room()
函数的副本转换为对象,那么这不等同于使用文字符号创建对象吗?如果是,那么不应该var bedroom = new Room();
只将Room 对象的属性分配给卧室对象吗?为什么它执行对象方法?如何在不执行其方法的情况下创建对象?