有没有办法在不使用类前缀的情况下访问PHP类的静态变量?
例:
class A {
protected static $x = "blahblah";
public static function p() {
print(A::$x); // <= Is there no way to omit A:: ???
}
}
Run Code Online (Sandbox Code Playgroud)
我理解,那时$ x可能是一个未初始化的局部变量,但是能够说/声明/设置在这些情况下解释器应解析$ x作为前面声明的成员会很有意义.在任何地方键入类前缀是一个主要的失败恕我直言.
我已经读过Is Rails无共享或者可以单独请求访问相同的运行时变量吗?他们解释我的问题:
类变量可能在我的rails srver的两个请求之间共享,但解决方案在哪里!?
如何在请求之间实现安全单例?
class Foo
@@instances = []
end
Run Code Online (Sandbox Code Playgroud)
我怎样才能确定每个请求HTTP都会重置实例?!
编辑:
我发现"config.reload_classes_only_on_change = false"解决方案,但我不确定它是最好的性能.
这个选项有什么后果?
我有一个例子来测试安全类变量:
class Test
def self.log
@test ||= false
puts @test
@test = true
end
end
class ApplicationController < ActionController::Base
def index
Test.log
Test.log
end
end
Run Code Online (Sandbox Code Playgroud)
如果我通过重新加载动作(F5)启动此代码,我希望每次在rails服务器的日志中读取"false".但是,默认情况下它只是第一次"假".
编辑2:实际上这个选项重装类,但没有解决线程中的concurency问题.类变量被重置,但它们可以被其他线程修改.
线程安全类变量如何?
singleton static-variables thread-safety class-variables ruby-on-rails-4
所以我先写了下面的代码,却遇到了编译错误。阅读此答案后: 静态数组类变量“多重定义”C++ 我修改了我的代码并将静态变量定义移动到一个 cpp 文件并且它执行得很好,但是我无法理解当我使用了预处理器防护时,为什么它显示多个定义错误?
#ifndef GRAPH_H
#define GRAPH_H
#include<iostream>
#include<vector>
using namespace std;
struct node{
int element=0;
static vector<bool> check;
node(){
if(check.size()<element+1)
check.resize(element+1);
}
};
vector<bool> node::check;
#endif
Run Code Online (Sandbox Code Playgroud) 我在 pyspark udf 函数中有问题,我想打印产生问题的行数。
我尝试使用 Python 中的“静态变量”等价物来计算行数,以便当用新行调用 udf 时,计数器会增加。但是,它不起作用:
import pyspark.sql.functions as F
def myF(input):
myF.lineNumber += 1
if (somethingBad):
print(myF.lineNumber)
return res
myF.lineNumber = 0
myF_udf = F.udf(myF, StringType())
Run Code Online (Sandbox Code Playgroud)
如何计算调用 udf 的次数,以便在 pyspark 中找到产生问题的行数?
python static-variables user-defined-functions python-3.x pyspark
我有下面的代码,奇怪的是它继续返回相同的值(即使filename)是不同的,如果我在同一个请求中多次调用它.
我刚刚完成代码,甚至stringbytes完全相同(即GetBytes(string))返回相同的值.
public static string Base64EncodeString(string filename)
{
var stringbytes = System.Text.Encoding.Default.GetBytes(filename);
return Convert.ToBase64String(stringbytes);
}
Run Code Online (Sandbox Code Playgroud) 问题是我们可以将变量A称为"全局变量"吗?一方面A是静态全局变量,因此根据定义它是全局变量,来自另一个全局变量必须在程序的每个点都可用,而不仅仅是在当前的转换单元中.谢谢.
#include<stdio.h>
static int A;
void main()
{
...
}
Run Code Online (Sandbox Code Playgroud) 我正在研究静态变量,我在维基百科上看到了这段代码.static int x在整个程序中存储它的值.即使我们在全球范围内声明它,它也会存储以前的值.这是否意味着静态和全局变量被视为相同.如果不是,两者如何工作?
#include <stdio.h>
void func() {
static int x=0;
// x is initialized only once across three calls of func()
printf("%d\n", x); // outputs the value of x
x = x + 1;
}
int main(int argc, char *argv[]) {
func(); // prints 0
func(); // prints 1
func(); // prints 2
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用Java的第一步,学习了所有的基础知识但后来发现了我需要的枚举问题,所以请原谅我,如果我的问题的解决方案是非常明显的:
所以我有这个枚举,并希望为从0向上计数的每个实例添加一个唯一的id,但不必为每个构造函数调用添加另一个参数(因为这可能导致以后的错误).
public enum TerrainTile{
WATER(1), GRASSLAND(1), HILL(2), FORREST(2), BLANK(99);
private final int id;
private final int moveCost;
private boolean hidden = true;
private TerrainTile(int moveCost) {
this.moveCost = moveCost;
}
Run Code Online (Sandbox Code Playgroud)
我想加上一个
static int nextID = 0;
Run Code Online (Sandbox Code Playgroud)
并编译构造函数
private TerrainTile(int moveCost) {
this.id = nextID++;
this.moveCost = moveCost;
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一条错误消息,指出它无法引用初始化程序中的静态字段.
有没有解决方法?
我想创建一个静态javascript变量,用作Angularjs控制器中的计数器.此静态变量将在重复调用的轮询函数中使用.
我想以一种看起来像这样的方式使用静态变量;
var polling_func = function()
{
static var counter = 0;
if (counter == 10)
{
alert('Do action');
counter = 0;
}
counter = counter + 1;
$timeout(polling_func, 1000);
}
polling_func();
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法在javascript中使用static关键字声明静态变量.我应该如何在我的代码中这样做?
我有一个关于Rails最佳实践的问题。在我的rails项目中,我有以下代码:
class MyController < ApplicationController
def some_method
@product = MyFabricatorClass.new.create_product
end
...
end
Run Code Online (Sandbox Code Playgroud)
MyFabricatorClass不依赖于某些状态,并且其行为是恒定的。我也在做很多C ++的工作,对我来说,总是实例化一个新的MyFabricatorClass对象似乎有点效率低下。在C ++项目中,我会适当地使用类似以下内容的东西:
class MyController < ApplicationController
@@my_fabricator = nil
def some_method
@@my_fabricator ||= MyFabricatorClass.new
@product = @@my_fabricator.create_product
end
...
end
Run Code Online (Sandbox Code Playgroud)
这种样式在Rails中也合法吗?典型的Rails方式是什么?
感谢您的任何建议...!
static-variables ×10
angularjs ×1
c ×1
c# ×1
c++ ×1
c++11 ×1
enums ×1
java ×1
javascript ×1
php ×1
pyspark ×1
python ×1
python-3.x ×1
singleton ×1