标签: class-variables

在Ruby中,为什么在启动irb之后,foo.nil?说未定义的错误,@ foo.nil?给出"真实"和@@ wah.nil?再次出错?

在Ruby 1.8.7和1.9.2中也是如此:

$ irb

ruby-1.8.7-p302 > foo.nil?
NameError: undefined local variable or method `foo' for #<Object:0x3794c>
    from (irb):1

ruby-1.8.7-p302 > @bar.nil?
 => true 

ruby-1.8.7-p302 > @@wah.nil?
NameError: uninitialized class variable @@wah in Object
    from (irb):3
Run Code Online (Sandbox Code Playgroud)

为什么实例变量的处理方式与本地和类变量不同?

ruby instance-variables local-variables class-variables

13
推荐指数
1
解决办法
1346
查看次数

获取类变量和值的字典

我正在研究一种方法,将所有类变量作为键和值返回为字典的值,例如我有:

first.py

class A:
    a = 3
    b = 5
    c = 6
Run Code Online (Sandbox Code Playgroud)

然后在second.py中,我应该可以调用一个方法或者一些会返回这样的字典的东西

import first

dict = first.return_class_variables()
dict
Run Code Online (Sandbox Code Playgroud)

然后dict将是这样的:

{'a' : 3, 'b' : 5, 'c' : 6}
Run Code Online (Sandbox Code Playgroud)

这只是一个解释这个想法的场景,当然我不希望它那么容易,但我会喜欢如果有关于如何处理这个问题的想法就像dict可以用来设置一个类变量值将变量,值组合作为键,值传递给它.

python dictionary class class-variables

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

静态类变量存储在内存中的哪个位置?

这是如何将静态数组存储在Java内存中的后续问题.

因此,C/C++中的全局变量存储在内存的静态数据段中.但是Java/C++中的静态类变量呢?

它不能是静态数据段,因为您不知道在程序的整个过程中将引用什么/多少类(因为反射).它绝对不是堆栈,因为这没有任何意义.将它存储在堆上也是一种不确定的方式.

c++ java memory static-members class-variables

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

在Ruby中有任何相关的语法应用程序:class << self ... end

class << self
attr_accessor :n, :totalX, :totalY
end
Run Code Online (Sandbox Code Playgroud)

上面的语法用于定义类实例变量.但是当我考虑语法含义时,它对我没有任何意义,所以我想知道这种类型的语法是否用于任何其他类型的定义.我在这里的困惑是:

class << self
Run Code Online (Sandbox Code Playgroud)

追加运算符通常意味着"向左侧的对象添加右侧的内容".但是在这个块的上下文中,如何将"将此块的内容放入类实例的定义而不是实例"?

出于同样的原因,我很困惑为什么在一个上下文类中,<< self可以定义类实例变量,而在另一个上下文它似乎创建了类变量,例如:

class Point
  # Instance methods go here
  class << self
    # Class methods go here
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby class-method class-variables class-instance-variables instance-methods

11
推荐指数
1
解决办法
1657
查看次数

"class var"是否初始化为零?

我知道,在Delphi中,实例变量和全局变量被初始化为零(之前已经提到过).

但是,静态变量(class var)呢?我希望类变量初始化为零,就像全局变量一样.但我已经看到太多新的Delphi编译器功能仍然是半生不熟的假设它工作,没有文件实际上声明保证.

帮助没有"class var"的索引条目."Fields"主题提到了类字段,但未指定它们是否在程序启动时初始化.显而易见的初始化它们(class var X: Integer = 0;)的明显修复不会编译("';'期望但'='找到").

类变量是否初始化为零?有文件明确说明这一点吗?

delphi class-variables

11
推荐指数
1
解决办法
1808
查看次数

class_getClassVariable()做什么?

如果实例变量属于类的实例,那么类变量将属于元类的实例,我认为.但是我对Objective-C元类的经验告诉我,这不太可能.

我想知道class_getClassVariable相反的是什么class_getInstanceVariable,以及为什么class_setClassVariable运行时没有.

metaclass class objective-c objective-c-runtime class-variables

11
推荐指数
1
解决办法
1155
查看次数

在Objective-C中锁定实例变量

什么应该是iOS应用程序中防止实例变量被另一个用户更改的最佳方式?@synchronized(self)指令的使用应该足够吗?

提前致谢

concurrency locking objective-c class-variables ios

10
推荐指数
2
解决办法
6059
查看次数

在子类中实现类变量

我正在努力扩展App Engine的Python webapp2 Web框架以引入一些缺少的功能(为了使创建应用程序更快更容易).

这里的一个要求是每个子类都需要有一些特定的静态类变量.如果在我使用它们时缺少它们​​或者有更好的方法,那么实现此目的的最佳方法是简单地抛出异常吗?

示例(不是真实代码):

子类:

class Bar(Foo):
  page_name = 'New Page'
Run Code Online (Sandbox Code Playgroud)

需要存在page_name才能在此处理:

page_names = process_pages(list_of_pages)

def process_pages(list_of_pages)
  page_names = []

  for page in list_of_pages:
    page_names.append(page.page_name)

  return page_names
Run Code Online (Sandbox Code Playgroud)

python subclass class-variables

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

在Ruby中访问类中的模块类变量

我有一个带有类变量的模块

module Abc
  @@variable = "huhu"

  def self.get_variable
    @@variable
  end

  class Hello
    def hola
      puts Abc.get_variable
    end
  end
end

a = Abc::Hello.new
a.hola
Run Code Online (Sandbox Code Playgroud)

是否可以不使用方法进入@@variable内部?我的意思是说会很好.只是好奇.Helloget_variableAbc.variable

ruby accessor class-variables

9
推荐指数
1
解决办法
3438
查看次数

为什么在Ruby中使用类变量被认为是"代码味道"?

根据Reek的说法,创建一个类变量被认为是"代码味道".这背后的解释是什么?

ruby class-variables class-instance-variables

9
推荐指数
1
解决办法
2088
查看次数