标签: global-variables

是否可以在Rust中使用全局变量?

我知道一般来说,应避免使用全局变量.尽管如此,我认为在实际意义上,有时需要(在变量是程序不可或缺的情况下)使用它们.

为了学习Rust,我目前正在使用sqlite3和GitHub上的Rust/sqlite3包编写数据库测试程序.因此,这需要(在我的测试程序中)(作为全局变量的替代),在大约有十几个函数之间传递数据库变量.一个例子如下.

  1. 在Rust中使用全局变量是否可行,可行和可取?

  2. 鉴于以下示例,我可以声明并使用全局变量吗?

extern crate sqlite;

fn main() {
    let db: sqlite::Connection = open_database();

    if !insert_data(&db, insert_max) {
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,但它看起来不太正确并导致下面的错误(我也尝试了一个unsafe块):

extern crate sqlite;

static mut DB: Option<sqlite::Connection> = None;

fn main() {
    DB = sqlite::open("test.db").expect("Error opening test.db");
    println!("Database Opened OK");

    create_table();
    println!("Completed");
}

// Create Table
fn create_table() {
    let sql = "CREATE TABLE IF NOT EXISTS TEMP2 (ikey INTEGER PRIMARY KEY NOT NULL)";
    match DB.exec(sql) {
        Ok(_) => println!("Table created"),
        Err(err) => println!("Exec of …
Run Code Online (Sandbox Code Playgroud)

global-variables rust

78
推荐指数
7
解决办法
6万
查看次数

如何避免JavaScript中的全局变量?

我们都知道全局变量不是最佳实践.但有几个例子,没有它们很难编码.您使用什么技术来避免使用全局变量?

例如,给定以下场景,您将如何使用全局变量?

JavaScript代码:

var uploadCount = 0;

window.onload = function() {
    var frm = document.forms[0];

    frm.target = "postMe";
    frm.onsubmit = function() {
        startUpload();
        return false;
    }
}

function startUpload() {
    var fil = document.getElementById("FileUpload" + uploadCount);

    if (!fil || fil.value.length == 0) {
        alert("Finished!");
        document.forms[0].reset();
        return;
    }

    disableAllFileInputs();
    fil.disabled = false;
    alert("Uploading file " + uploadCount);
    document.forms[0].submit();
}
Run Code Online (Sandbox Code Playgroud)

相关标记:

<iframe src="test.htm" name="postHere" id="postHere"
  onload="uploadCount++; if(uploadCount > 1) startUpload();"></iframe>

<!-- MUST use inline JavaScript here for onload event
     to …
Run Code Online (Sandbox Code Playgroud)

javascript global-variables

75
推荐指数
5
解决办法
7万
查看次数

PHP传递变量以包含

我正在尝试将变量传递给包含文件.我的主机改变了PHP版本,现在无论我尝试什么解决方案都行不通.

我想我已经尝试了所有可以找到的选项.我确定这是最简单的事情!

需要从调用的第一个文件设置和评估变量(它实际上是$_SERVER['PHP_SELF'],并且需要返回该文件的路径,而不是包含的文件second.php).

选项一

在第一个文件中:

global $variable;
$variable = "apple";
include('second.php');
Run Code Online (Sandbox Code Playgroud)

在第二个文件中:

echo $variable;
Run Code Online (Sandbox Code Playgroud)

选项二

在第一个文件中:

function passvariable(){
    $variable = "apple";
    return $variable;
}
passvariable();
Run Code Online (Sandbox Code Playgroud)

选项三

$variable = "apple";
include "myfile.php?var=$variable"; // and I tried with http: and full site address too.


$variable = $_GET["var"]
echo $variable
Run Code Online (Sandbox Code Playgroud)

这些都不适合我.PHP版本是5.2.16.

我错过了什么?

谢谢!

php variables global global-variables include

75
推荐指数
7
解决办法
11万
查看次数

编译错误:"初始化元素不是编译时常量"

编译此代码时,我得到错误"初始化元素不是编译时常量".有谁能解释为什么?

#import "PreferencesController.h"

@implementation PreferencesController

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}


NSImage* imageSegment = [[NSImage alloc] initWithContentsOfFile:@"/User/asd.jpg"];//error here
Run Code Online (Sandbox Code Playgroud)

cocoa compiler-errors initialization global-variables objective-c

73
推荐指数
4
解决办法
10万
查看次数

如何告诉JSLint/JSHint已定义了哪些全局变量

在我的项目中,我们有一些全局变量作为容器:

MyProject.MyFreature.someFunction = function() { ... }
Run Code Online (Sandbox Code Playgroud)

那么我在整个网站上使用该脚本,JSLint/JSHint抱怨:

"MyProject"未定义

我知道我可以访问每个JavaScript文件并在其/*global MyProject*/上添加注释.但我正在寻找一种方法来在某种配置文件中定义该注释,所以我不必逐个文件添加此注释.

选择中的某种选择config/jshint.yml会很好.

javascript global-variables jslint jshint

72
推荐指数
2
解决办法
4万
查看次数

我听说全球变量很糟糕,我应该使用哪种替代解决方案?

我已经读过全局变量都不好的地方,应该使用替代方案.在Javascript中,我应该选择什么解决方案.

我正在考虑一个函数,当有两个arguments(function globalVariables(Variable,Value))时,看看Variable是否存在于一个本地数组中,并且它是否将它的值设置为Value,else,Variable并被Value追加.如果在没有arguments(function globalVariables())的情况下调用该函数,则返回该数组.也许如果仅使用一个参数(function globalVariables(Variable))触发该函数,它将返回Variable数组中的值.

你怎么看?我想听听你使用全局变量的替代解决方案和论据.

你会怎么用 globalVariables();

function append(){
    globalVariables("variable1","value1"); //globalVariables() would append variable1 to it's local array.
};

function retrieve(){
    var localVariable1 = globalVariables("variable1"); //globalVariables() would return "value1".
};

function retrieveAll(){
    var localVariable1 = globalVariables(); //globalVariables() would return the globalVariable()'s entire, local [persistently stored between calls] array.
};

function set(){
    globalVariables("variable1","value2"); //globalVariables() would set variable1 to "value2".
};
Run Code Online (Sandbox Code Playgroud)

这是Singleton Pattern BTW吗? …

javascript global-variables

71
推荐指数
3
解决办法
6万
查看次数

71
推荐指数
5
解决办法
18万
查看次数

Java中的默认值和初始化

根据我的参考,基本类型具有默认值,对象为空.我测试了一段代码.

public class Main {
    public static void main(String[] args) {
        int a;
        System.out.println(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

该行将System.out.println(a);是指向变量的错误a,variable a might not have been initialized而在给定的引用中,该变量integer将具有0默认值.但是,使用下面给出的代码,它实际上会打印出来0.

public class Main {
    static int a;
    public static void main(String[] args) {
        System.out.println(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个代码可能出现什么问题?类实例变量的行为是否与局部变量不同?

java initialization global-variables local-variables default-value

71
推荐指数
4
解决办法
13万
查看次数

使用带线程的全局变量

如何与线程共享全局变量?

我的Python代码示例是:

from threading import Thread
import time
a = 0  #global variable

def thread1(threadname):
    #read variable "a" modify by thread 2

def thread2(threadname):
    while 1:
        a += 1
        time.sleep(1)

thread1 = Thread( target=thread1, args=("Thread-1", ) )
thread2 = Thread( target=thread2, args=("Thread-2", ) )

thread1.join()
thread2.join()
Run Code Online (Sandbox Code Playgroud)

我不知道如何让两个线程共享一个变量.

python multithreading global-variables

69
推荐指数
4
解决办法
13万
查看次数

如何在不使用全局变量的情况下在bash中返回数组?

我有一个创建数组的函数,我想将数组返回给调用者:

create_array() {
  local my_list=("a", "b", "c")
  echo "${my_list[@]}"
}

my_algorithm() {
  local result=$(create_array)
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我只得到一个扩展的字符串.如何在不使用全局的情况下"返回"my_list?

arrays bash global-variables parameter-passing

68
推荐指数
6
解决办法
7万
查看次数