如何在C++中默认初始化基本类型的局部变量?例如,如果a有一个typedef:
typedef unsigned char boolean;//that's Microsoft RPC runtime typedef
Run Code Online (Sandbox Code Playgroud)
我想更改以下行:
boolean variable = 0; //initialize to some value to ensure reproduceable behavior
retrieveValue( &variable ); // do actual job
Run Code Online (Sandbox Code Playgroud)
自动默认初始化变量的东西 - 我不需要为它分配一个特定的值,而是每次程序运行时我只需要将它初始化为相同的值 - 与构造函数相同的东西我可以拥有的初始化列表:
struct Struct {
int Value;
Struct() : Value() {}
};
Run Code Online (Sandbox Code Playgroud)
并且Struct::Value将默认初始化每一个实例cinstructed时间相同的值,但我从来不写在代码的实际值.
如何为局部变量获得相同的行为?
我在Java中遇到了一个微不足道但却很烦人的问题.假设我们有以下类和方法:
class A{
void doSth(int[] array){
int index1, index2, index3;
int value1, value2, value3;
if(array[index1] > 10){
//Long code modifies value1, value2, value3
}
if(array[index3] > 100){
//Same long code modifies value1, value2, value3
}
if(array[index2] > 20){
//Same long code modifies value1, value2, value3
}
}
Run Code Online (Sandbox Code Playgroud)
无视这是想要实现的目标,我想以某种方式使这种冗余消失.通常,我会将值传递给hlper方法,但我不能,因为块正在修改局部变量.知道如何简化这个吗?
Zsh有两个很好的功能,local关键字和数组概念.
local my_var # Declare variable local to this function
Run Code Online (Sandbox Code Playgroud)
和
arr=(1 2 3) # Create array with 3 elements
arr+=4 # Add a fourth element
Run Code Online (Sandbox Code Playgroud)
分别.
将它们组合起来的想法(local arr=())是不可抗拒的,但似乎只是给出错误?可能吗?
嘿,我在这里遇到小问题.
问题:如何为函数创建唯一变量,因此当多次调用时,变量将保持它们应该的(不交换)
请记住,我必须保持异步,因为循环将很大而不运行它async会很难达到性能
我有一个在画布上绘制项目的功能.然后我在for循环中运行这个函数,根据数组中的一些数据绘制一些画布.
如此简化的版本:
function renderCanvas(canvas, dID) {
var mName, bName, sName, tName;
this.layerCounter = mainData[dID]['layerCount'];
console.debug(designID + " has " + layerCounter + " layers");
/* that gives 2 layers for first item and 3 for second)*/
tctx2.clearRect(0, 0, tc2.width, tc2.height);
var imgPath = sName;
imgObj = new Image();
imgObj.src = "img/" + imgPath;
imgObj.onload = function () {
tctx2.drawImage(imgObj, 0, 0, w, h, 0, 0, dw, dh);
layerCounter--;
console.debug(designID + " has " + layerCounter + " …Run Code Online (Sandbox Code Playgroud) 我想知道在调用方法时是否有一种简单的方法来传递所有局部变量,而不是逐个传递它们作为参数.我想要以下内容:
class Greeting
def hello
message = 'HELLO THERE!'
language = 'English'
say_greeting
end
def konnichiwa
message = 'KONNICHIWA!'
language = 'Japanese'
say_greeting
end
private def say_greeting
puts message
end
end
Greeting.new.hello
Run Code Online (Sandbox Code Playgroud)
显示HELLO THERE!.但它返回一个错误:NameError: undefined local variable or method 'message'.
我试图local_variables将所有局部变量作为符号数组.但我似乎无法访问实际变量,因为似乎没有类似的Ruby方法local_variable_get.
问题的背景
在我的Rails应用程序中,我有一个控制器,它有三种不同视图文件的更新方法.所有这些行为完全相同(它们都会更新资源,显示错误,如果有的话等).他们唯一的主要区别是
我只有三个变量,所以将它们作为参数传递确实很容易,但我只是想知道是否有一个优雅的解决方案.
我正在编写一个数据混搭功能,我正在修改一段动态比特破碎音频滤波器的音频数据.我很方便使用静态变量,因为它们的值在函数调用之间延续,这有助于我通过在渲染回调中递增等来实现一些有趣的基于时间的效果.
例如,一种效果使用sin函数来调整一些声音效果.像这样:
void mangle(float * data, int n) {
static bool direction = false;
static float bottom = 0;
static float top = n;
static float theta = 0;
theta += 5;
// data = sin(theta) etc..
Run Code Online (Sandbox Code Playgroud)
所以我希望theta初始化一次,然后再修改.同样,top想要成为静态变量,因为我稍后在函数中修改它.另外,由于基于程序状态的变化,top应该采取参数的值.但是当我去分配时,我得到了编译器错误nnntop
Initializer element is not a compile-time constsant.
有没有办法将参数分配给静态变量?有没有其他方法可以实现我想要的没有静态变量?我知道我可以使用实例变量,但我发现它太多了.
我有一个Lua代码如下:
a, b = 1, 10
if a<b then
print(a)
local a
print(a)
end
print(a, b)
Run Code Online (Sandbox Code Playgroud)
只是一个小问题:
首先,我创建了一个全局变量a = 1;
然后在then块中我使用全局变量a来打印它;
然后我声明了一个未初始化的局部变量a(因此得到的值为nil)
然后我的问题来了:在then块中创建了局部变量a后,我怎样才能访问全局变量a,这是可能的?如果是这样,请给我一个答案:)
TL:博士;我不能热键里面变量声明为局部的,其手段temp和index全局访问。
我最近发现局部变量不能从热键中声明为局部变量,也不能在for-loop中用作参数。
^j::
local temp = Hello, world! ; Error: This line does not contain a recognized action
Return
SampleFunction() {
for local temp in myArray { ; Error: Variable name contains an illegal character
; do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
这成为#warn启用的问题。除非我记得为每个 for 循环使用唯一的变量名,否则我会遇到以下错误:
警告:此局部变量与全局变量同名。(具体:索引)
例如:
#warn
^j::
index = 42 ; This *index* variable is global
Return
UnrelatedFunction() {
for index in myArray { ; This *index* …Run Code Online (Sandbox Code Playgroud) 我不确定之前是否曾经问过,但我找不到它.假设我有一个带有局部变量的过程.通常,该函数在函数完成运行后会被销毁.但在某些情况下,我希望它能够持久存在,就像在这个例子中一样:
Function myFunction()
Dim runCount As Integer
runCount = runCount +1
debug.print "This function is now running for the " & runCount & " time."
End Function
Run Code Online (Sandbox Code Playgroud)
在此示例中,代码不起作用,因为每次都会重置runCount.当然,最简单的解决方案是声明一个全局变量,但在某些情况下,我想为了简单,封装或其他原因而避免这种情况.
那么,在程序运行完成后,有没有办法让局部变量保持不变?
当你将一个本地字符串的值赋给一个类的实例变量时,它是否创建了一个新对象(String)?
public void setNumber(String number){
if(number == null || number.length() != 9)
return;
this.number = number;
}
Run Code Online (Sandbox Code Playgroud)
这样做隐式工作是这样的:
this.number = new String(number);
Run Code Online (Sandbox Code Playgroud) local-variables ×10
java ×2
variables ×2
arrays ×1
autohotkey ×1
c ×1
c++ ×1
function ×1
javascript ×1
lua ×1
object ×1
ruby ×1
scope ×1
vba ×1
zsh ×1