草庐IT

SELF-INSTRUCT

全部标签

Ruby:有没有办法可以像这样进行赋值:self.value_at_location(x,y)=value?

我知道我能做到self.value_at_location=(x,y,value)通过将方法定义为value_at_location=(x,y,value)但为了可读性,我认为如果value_at_location(x,y)=(value)是可能的,那就太棒了。或类似的东西。有什么建议吗? 最佳答案 不,您不能定义setter方法来执行foo(x,y)=value。但是你可以做的是定义[]=(x,y,value),这样你就可以调用self[x,y]=value。 关于Ruby:有没有办法

ruby - 在 ruby​​ 中,这种类型的定义是什么 : self. class.method

我是一个试图理解一些代码的NOOB。这个self.class.current_section是做什么的?classMyClassclass 最佳答案 self返回当前对象。self.class返回当前对象的类。self.class.current_section调用当前对象类的方法(该方法称为current_section)。defcurrent_section()pselfpself.classendcurrent_section() 关于ruby-在ruby​​中,这种类型的定义是什

ruby - 在 ruby​​ 脚本中访问 self.method 中的变量

我对ruby很陌生。我在获取self.method中的变量值时遇到问题我的ruby​​类/脚本如下所示:classA1definitialize@myUtil=MyUtil.newlog@test_hash=@myUtil.loadPropertiesFile(File.dirname(__FILE__)+'/my-tests.properties')enddefself.testCasestests={}@test_hash.eachdo|k,v|puts"#{k}"endtestsenddeflaunchtest,testbed,h={}@test_hash.eachdo|k,v|

ruby - 这个 Ruby 语法是什么意思:if self < Class::Name?

我遇到了这种我以前从未见过的奇怪语法:ifself这检查了什么? 最佳答案 它检查self是否是Example::Class::Name的子类查看Moduledocs:) 关于ruby-这个Ruby语法是什么意思:ifself https://stackoverflow.com/questions/21034048/

ruby - initialize和self.new的区别

抱歉,我不确定如何解释才能解释这个。下面两段代码之间有什么区别(如果有的话)?classFoodefinitalizeendendclassFoodefself.newallocateendend此外,下面两种初始化类的方式有什么区别:Foo.newFoo.allocate 最佳答案 allocate为Foo的实例分配内存,但不初始化它。initialize在已分配的对象上调用以初始化(设置初始值)Foo的实例。new的默认实现调用了这两个:classFoodefself.new(*args,&blk)obj=allocateobj

ruby - 为什么我们使用 "class << self"表达式?

在Ruby中,有几种方法可以声明类方法。我们有这两种形式...classDogdefself.speciesputs"I'madog."enddefDog.species_rly?puts"Stilladog."endend还有另一个更长的形式...classDogclass为什么使用最后一种形式?这比仅仅这样做有什么好处?classDogdefDog.some_method#...endend 最佳答案 Thiswonderfulbook说这三种语法是相同的。选择哪一个是个人喜好的问题。它还说类名语法(defDog.some_me

Ruby - 实例方法 : why can i use getter without self, 但 setter 仅与 self

我已经使用Ruby一段时间了。现在我要深入挖掘并找到所有问题的答案。我希望我能在这里找到这个问题的答案。所以这是我在下面的代码中的问题:classGameattr_accessor:in_progressdefinitialize@in_progress=falseenddefstart!#debuginfoputsself.inspect#=>#putsself.class.instance_methods(false)#=>[:in_progress,:in_progress=,:start!]putsself.instance_variables#=>[:@in_progress

ruby - self.class.delete 是否调用类方法?

我正在查看Ruby库中的这段代码。我是否正确假设self.class.delete在当前对象上调用class方法调用delete-即引用的对象通过self。defdelete!self.class.delete(self.key)end 最佳答案 它为self的类调用类方法delete。classExampledefself.deleteputs"Classmethod.'self'isa"+self.class.to_senddefdelete!puts"Instancemethod.'self'isa"+self.class.t

ruby - instance_eval 和 class << self 之间的区别?

我似乎无法理解这两个“构造”之间的确切区别。在我看来,以下小脚本应该输出相同的内容三次:classExampleputsselfclass但是,输出是:Example#Example这是我的理由:Example是Class的实例,所以self在类主体中指的是;class套self随便什么obj在给定的block中,在我的例子中是Class的实例那是Example(这是我可能错的地方);instance_eval在给定实例中运行block,因此,在我的例子中,这与将代码直接放入类主体中的block几乎相同。我目前的猜测是class在Example之间插入一个幽灵类和Class并将self

ruby - 当键不存在时从 Hash#[] 返回 self(而不是 nil)

通常,当一个元素被传递到没有匹配键的散列时,散列返回nil。hsh={1=>"one",2=>"two"}hsh[3]#=>nil我想形成一个散列,如果没有匹配,则返回传递给它的值。hsh[3]#=>3我猜这个问题的解决方案可能涉及某种lambda...?**现在我正在为此使用一个笨拙的解决方案,它使用条件方法来防止将不匹配的键传递到哈希中.. 最佳答案 如果您只想返回新值而不想添加它们:h=Hash.new{|_hash,key|key}要最初填充此散列,您可以执行以下操作:h.merge({1=>"one",2=>"two"})