标签: initializer

用于开发和生产的Rails初始化程序

我有以下代码 /config/initializers/chargify.rb

Chargify.configure do |c|
  c.subdomain = 'example'
  c.api_key   = '123xyz'
end
Run Code Online (Sandbox Code Playgroud)

但我有不同的开发和生产设置.

那么,我如何根据环境获得一组不同的变量值呢?

environment ruby-on-rails initializer

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

跳过变量初始化格式错误还是会导致未定义的行为?

考虑这个代码:

void foo()
{
    goto bar;
    int x = 0;
    bar: ;
}
Run Code Online (Sandbox Code Playgroud)

GCC 和 Clang拒绝它,因为跳转到bar:绕过变量初始化。MSVC 根本不抱怨(除非使用xafterbar:导致警告)。

我们可以用 a 做类似的事情switch

void foo()
{
    switch (0)
    {
        int x = 0;
        case 0: ;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在所有三个编译器都发出错误

这些片段格式不正确吗?或者他们会导致UB?

我曾经认为两者都是格式错误的,但我找不到标准的相关部分。[stmt.goto]不说这事,而且也不[stmt.select]

c++ goto initializer variable-declaration language-lawyer

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

增加在初始化列表中使用两次的变量 - 未定义的行为?

编辑:尚未回答 - 链接的问题是关于普通的r值,初始化列表是一个单独的,如果相关的概念.

这个语句定义得很好,或者在初始化列表中使用前缀增量运算符,对于在列表中出现两次的变量,未定义的行为?

struct T t = { i, ++i };
Run Code Online (Sandbox Code Playgroud)

我对ANSI C最感兴趣,但知道其他版本的C和/或C++是否有所不同也很有用.如果类似以下的类似结构是合法的:

struct T t = { i, i++ };

struct T t = { ++i, ++i };

struct T t = { i++, ++i };

struct T t = { i++, i++ };
Run Code Online (Sandbox Code Playgroud)

c c++ initializer undefined-behavior

16
推荐指数
3
解决办法
800
查看次数

Java双支撑初始化工作总是如何?

我知道这段代码:

Set<String> set = new HashSet<String>() {{
  add("test1");
  add("test2");
}};
Run Code Online (Sandbox Code Playgroud)

是真的:

Set<String> set = new HashSet<String>() {
  {//initializer
    add("test1");
    add("test2");
  }
};
Run Code Online (Sandbox Code Playgroud)

初始化程序块正在构造函数块之前执行.在上面的示例中,在执行构造函数之前调用add("test1").构造函数可能正在初始化许多实例字段,因此这个类可以工作.我想知道为什么在构造函数之前调用.add()会起作用?有没有导致问题的案例?

java initializer double-brace-initialize

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

在函数范围之外运行C++代码

(我知道)在c ++中,我可以 declare variable超出范围,除了初始化全局/静态变量之外,我不能运行任何代码/语句.


理念

使用下面棘手的代码以便(例如)做一些 std::map操作是一个好主意吗?

在这里,我使用void *fakeVar并初始化它Fake::initializer()并做任何我想要的东西!

std::map<std::string, int> myMap;

class Fake
{
public:
    static void* initializer()
    {
        myMap["test"]=222;
        // Do whatever with your global Variables

        return NULL;
    }
};

// myMap["Error"] = 111;                  => Error
// Fake::initializer();                   => Error
void *fakeVar = Fake::initializer();    //=> OK

void main()
{
    std::cout<<"Map size: " << myMap.size() << std::endl; // Show myMap has initialized correctly :)
}
Run Code Online (Sandbox Code Playgroud)

c++ static initialization initializer

15
推荐指数
4
解决办法
5616
查看次数

C#初始化条件赋值

在ac#initialiser中,如果条件为false,我想不设置属性.

像这样的东西:

ServerConnection serverConnection = new ServerConnection()  
{  
    ServerInstance = server,  
    LoginSecure = windowsAuthentication,  
    if (!windowsAuthentication)
    {
        Login = user,  
        Password = password  
    }
};
Run Code Online (Sandbox Code Playgroud)

可以办到?怎么样?

c# initializer

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

如何创建初始化程序来创建和迁移mysql数据库?

我一直在学习如何使用EF一个星期左右,我一直坚持创建/更新我的数据库的问题.如果不存在,我可以创建一个初始化器来创建数据库:

static class Program
{
    static void Main()
    {
        Database.SetInitializer<GumpDatabase>(new GumpDatabaseInitializer());
....

class GumpDatabaseInitializer : CreateDatabaseIfNotExists<GumpDatabase>
{
    public GumpDatabaseInitializer()
    {
    }
    protected override void Seed(GumpDatabase context)
    {
        context.Database.ExecuteSqlCommand("CREATE UNIQUE INDEX Name ON Stations (Name)");
        // Other stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

或者我可以创建配置来迁移数据库

static class Program
{
    static void Main()
    {
        Database.SetInitializer<GumpDatabase>(new MigrateDatabaseToLatestVersion<GumpDatabase, Configuration>());
....

internal sealed class Configuration : DbMigrationsConfiguration<GumpDatabase>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator()); 
    }

    protected override void Seed(GumpDatabase context)
    {

    }
Run Code Online (Sandbox Code Playgroud)

每个都正常工作,但我还没有想出办法做到这两点.我可以通过更改SetInitializer调用在两个初始化程序之间切换,但是如果我想创建数据库,如果它不存在,并且如果它是我该怎么做的话还要迁移它?我需要创建自定义初始化程序吗?

谢谢

根据NSGaga答案编辑

class …
Run Code Online (Sandbox Code Playgroud)

c# mysql migration initializer entity-framework-4.3

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

Go中的静态初始化?

我目前正在研究Go Lang教程,但遇到了其中一个练习的问题:

https://tour.golang.org/methods/23

练习让我实现了一个ROT13密码.我决定使用从字节到旋转值的映射来实现密码,但我不确定初始化此映射的最佳方法.我不想使用文字初始化地图,但更喜欢通过循环遍历字母表并在循环内设置(键,值)对来编程.我还希望只能从Rot13Reader结构/对象访问该地图,并让所有实例(?)共享相同的地图(而不是每个Rot13Reader一个副本).

这是我目前正在进行的Go计划:

package main

import (
    "io"
    "os"
    "strings"
)

type rot13Reader struct {
    r io.Reader
}

var rot13Map = map[byte]byte{}

func (rotr *rot13Reader) Read(p []byte) (int, error) {
    n, err := rotr.r.Read(p)
    for i := 0; i < n; i++ {
        if sub := rot13Map[p[i]]; sub != byte(0) {
            p[i] = sub
        }
    }
    return n, err
}

func main() {
    func() {
        var uppers = []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
        var lowers = []byte("abcdefghijklmnopqrstuvwxyz")

        var init = func (alphabet …
Run Code Online (Sandbox Code Playgroud)

static initializer go static-initialization

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

使用三个参数减少功能

reduce函数如何在python3中使用三个参数而不是两个参数.所以,对于两个,

tup = (1,2,3)
reduce(lambda x, y: x+y, tup)
Run Code Online (Sandbox Code Playgroud)

我得到这个.这只是总结了所有元素tup.但是,如果你给reduce函数三个参数,如下所示,

tup = (1,2,3)
reduce(lambda x, y: x+y, tup, 6)
Run Code Online (Sandbox Code Playgroud)

这会给你一个价值12.我检查了python3的文档,它说第三个参数是初始化器.那就是说,如果没有插入第三个参数,那么默认初始化器是什么?

python reduce initializer python-3.x

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

在C#中创建二维数组的数组

我只想创建一个二维数组的数组来存储坐标点.

所以我想要一个数组,其中每个索引返回一个二维数组,我将其用作xy.

这是我尝试过的:

waypoints = new int[4][,]    {
        {{0},{6, 0}},
        {{1},{1, 1}},
        {{2},{1, 5}},
        {{3},{6, 5}}
    };
Run Code Online (Sandbox Code Playgroud)

我意识到这可能看起来很愚蠢,但我已经尝试在谷歌上查找了,而且我没有取得任何好成绩.

它给出了一个错误:

"错误CS0623:数组初始化程序只能在变量或字段初始化程序中使用.请尝试使用新表达式"

我也试过这样做:

waypoints = new int[4][,] {
        new int[,] {6, 0},
        new int[,] {1, 1},
        new int[,] {1, 5},
        new int[,] {6, 5}
        };
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误:

"错误CS0846:预期嵌套数组初始化程序"

c# arrays initialization initializer multidimensional-array

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