问题标签 [initializer]

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.

0 投票
6 回答
1348 浏览

c# - 有没有办法在 C# 的对象初始化程序块中使用扩展方法

下面的简单演示捕获了我正在尝试做的事情。在实际程序中,我必须使用对象初始化程序块,因为它正在读取 LINQ to SQL 选择表达式中的列表,并且有一个值我想从数据库中读取并存储在对象上,但是对象没有我可以为该值设置的简单属性。相反,它有一个 XML 数据存储。

看起来我无法在对象初始化程序块中调用扩展方法,也无法使用扩展方法附加属性。

那么我对这种方法不走运吗?唯一的选择似乎是说服基类的所有者针对这种情况对其进行修改。

我有一个现有的解决方案,其中我将 BaseDataObject 子类化,但这也存在在这个简单示例中没有出现的问题。对象作为 BaseDataObject 持久化和恢复 - 强制转换和测试会变得复杂。

答案之一(来自 mattlant)建议使用流畅的界面样式扩展方法。例如:

但这会在 LINQ 查询中工作吗?

0 投票
2 回答
1185 浏览

ruby-on-rails - Rails 初始化程序中对夹具数据的依赖

我有一个初始化程序,它设置了在整个应用程序中使用的默认值。该值是一个 ActiveRecord 模型,我本质上是在应用程序的生命周期内缓存它:

记录保证在数据库中:它是其他模型引用的夹具数据。这工作正常,除非在每次测试运行之前清除数据库的测试环境中。(我在边缘轨道上运行,我认为这是最近的行为:我曾经能够手动插入数据并在测试运行之间保留它。)我的regions.yml夹具文件中也有记录,但直到夹具才加载在 rails 初始化程序完成后。

处理这种对夹具数据的依赖的正确方法是什么?还是有更好的方法来构建它?我宁愿不使用 before_filter 因为在每个请求上重新加载它是没有意义的:它不会改变,除非在不同的部署中。

0 投票
7 回答
6015 浏览

c# - 是否可以将 ac# 对象初始化程序与工厂方法一起使用?

我有一个带有静态工厂方法的类。我想调用工厂来检索类的实例,然后进行额外的初始化,最好通过 c# 对象初始化器语法:

对比

0 投票
2 回答
1799 浏览

ruby-on-rails - Ruby on Rails:从初始化文件运行 rake 任务时出错

我有文件 config/initializers/custom.rb

在文件中,只有一行:

我认为这应该像从命令行键入时一样执行该行。使用这行代码,当我运行“ruby script/server”时,服务器冻结并且不输出任何错误消息。我错过了什么吗?

谢谢!

0 投票
10 回答
71213 浏览

java - Java 中初始化器与构造器的使用

所以我最近一直在复习我的 Java 技能,并发现了一些我以前不知道的功能。静态和实例初始化器就是两种这样的技术。

我的问题是什么时候会使用初始化程序而不是在构造函数中包含代码?我想到了几个明显的可能性:

  • 静态/实例初始化器可用于设置“最终”静态/实例变量的值,而构造函数不能

  • 静态初始化器可用于设置类中任何静态变量的值,这应该比在每个构造函数的开头使用“if (someStaticVar == null) // do stuff”代码块更有效

这两种情况都假设设置这些变量所需的代码比简单的“var = value”更复杂,否则似乎没有任何理由使用初始化程序而不是在声明变量时简单地设置值。

然而,虽然这些并不是微不足道的收获(尤其是设置最终变量的能力),但似乎确实有相当有限的情况应该使用初始化程序。

一个人当然可以使用初始化器来完成构造函数中所做的很多事情,但我真的不明白这样做的原因。即使一个类的所有构造函数共享大量代码,对我来说,使用私有 initialize() 函数似乎比使用初始化器更有意义,因为它不会锁定你在编写新代码时运行该代码构造函数。

我错过了什么吗?是否还有许多其他情况需要使用初始化程序?或者它真的只是在非常特定的情况下使用的一个相当有限的工具?

0 投票
13 回答
3281 浏览

c++ - 有没有办法在 for 循环初始化程序中定义两种不同类型的变量?

您可以在 for 循环中定义 2 个相同类型的变量:

但是定义不同类型的变量是违法的:

有没有办法做到这一点?(我不需要i在循环内使用,只需j。)

如果你有完全破解和模糊的解决方案,这对我来说没关系。

在这个人为的例子中,我知道你可以只使用double这两个变量。我正在寻找一个普遍的答案。

请不要建议将任何变量移到 for body 之外,这对我来说可能不可用,因为一个迭代器必须在循环之后消失,而 for 语句将包含在我的foreach宏中:

它可以这样使用:

但我需要这样使用的东西:

请不要引入任何运行时开销(但编译可能会很慢)。

0 投票
3 回答
2098 浏览

c# - 调试 C# 对象初始化程序

有人对调试 C# 对象初始化程序块中的异常有任何提示吗?对象初始值设定项语法基本上是全有或全无,这使得在 LINQ 查询内部进行故障排除特别困难。除了将对象创建分解为一个单独的方法之外,我能做些什么来查看哪个属性设置器抛出异常吗?

0 投票
3 回答
24592 浏览

objective-c - Objective-C中的静态构造函数等效?

我是Objective C的新手,我无法找出语言中是否存在等效的静态构造函数,即类中的静态方法,将在此类的第一个实例之前自动调用被实例化。还是我需要自己调用初始化代码?

谢谢

0 投票
5 回答
519 浏览

c++ - TCPL 5.9.9 (C++):在自己的初始化程序中使用名称有什么意义?

这是 Stroustrup 最新版本的“C++ 编程语言”中的一个问题。

在过去的几天里,我一直在考虑这个问题。

我唯一能想到的(这可能是不正确的)是这样的:

我的意图是获取堆栈中更高位置的地址。这有道理吗?还有其他人有其他答案吗?请记住,这在第 5 章(指针、数组和结构)中,所以答案不应该涉及本书后面的内容。

0 投票
22 回答
176745 浏览

c++ - C ++中的静态构造函数?我需要初始化私有静态对象

我想要一个具有私有静态数据成员的类(一个包含所有字符 az 的向量)。在 java 或 C# 中,我可以只创建一个“静态构造函数”,它将在创建类的任何实例之前运行,并设置类的静态数据成员。它只运行一次(因为变量是只读的并且只需要设置一次)并且由于它是类的函数,它可以访问其私有成员。我可以在构造函数中添加代码来检查向量是否已初始化,如果未初始化则对其进行初始化,但这会引入许多必要的检查,并且似乎不是问题的最佳解决方案。

我突然想到,由于变量是只读的,它们可以是 public static const,所以我可以在类之外设置它们一次,但再一次,它看起来有点像一个丑陋的 hack。

如果我不想在实例构造函数中初始化它们,是否可以在类中拥有私有静态数据成员?