class Appthin
@fileDir = ["a","b"]
puts @fileDir.class
def findclass
puts @fileDir.class
checkFiles(@fileDir)
end
end
输入
Array
NilClass
为什么它们不同,这让我感到困惑。
答案 0 :(得分:4)
这是因为以@
符号开头的变量是实例变量,但是当您第一次调用它时,没有初始化Appthin的实例。
当您引用实例变量时,它将选择self
并为其设置实例变量。
如果您要从类的主体 调用实例变量,则self
是类本身,它是Class的实例,而不是Appthin的实例。
问题的解决方案取决于您要执行的操作:
如果要在类主体中设置一个变量,该变量可供该类的所有实例访问,则可以使用常量。
class Appthin
FILE_DIR = ['a', 'b']
def find_class
puts FILE_DIR
end
end
如果您要设置属于Appthin特定实例的变量,然后可以对其进行更改,请在initialize方法中进行设置:
class Appthin
def initialize
@file_dir = ['a', 'b']
end
def find_class
puts @file_dir
end
end