草庐IT

pthread_self

全部标签

ruby-on-rails - 如何在 Rails 中使用 "self"关键字

关于Rails中的关键字self,我知道关键字指的是类本身的一个实例。例如,在self.encrypted_pa​​ssword中。我不太明白为什么在右侧作为参数传递的属性password也没有以self关键字为前缀?classUsertrue,:confirmation=>true,:length=>{:within=>6..40}before_save:encrypt_passwordprivatedefencrypt_passwordself.encrypted_password=encrypt(password)enddefencrypt(string)string#Onlya

ruby - 通过参数访问对象的 `self`

假设我想以这种方式访问​​随机索引处的数组元素:[1,2,3,4].at(rand(4))有没有办法像下面这样传递数组的大小?[1,2,3,4].at(rand(le_object.self.size))我为什么要那样做?--一位伟人曾说过:科学不是关于为什么,而是关于为什么不。 最佳答案 不推荐,但instance_eval会以某种方式工作:[1,2,3,4].instance_eval{at(rand(size))}你也可以break来自tap:[1,2,3,4].tap{|a|breaka.at(rand(a.size))}有

ruby - 为什么在 ruby​​ 中使用 class << self?

您能解释一下开发人员为什么使用class吗?向基类添加方法?base.rbfromtheGeoPlanetGemmoduleGeoPlanetclassBaseclass 最佳答案 因为他不知道defGeoPlanet::Base.build_url(resource_path,options={})end也可以吗?嗯,它们不是100%等价的:如果GeoPlanet不存在,那么原始代码片段将创建模块,但我的版本将引发NameError.要解决这个问题,您需要这样做:moduleGeoPlanetdefBase.build_url(r

ruby-on-rails - self 可以为假或为零吗?

self是否可以评估为false或nil?例如……classFooBar...defcheck_thisself&&check_something_elseendend这个条件中的self&&是否必要? 最佳答案 是的。记住Ruby中的一切都是对象,所以self对于false和nil是假的:nil.instance_eval{self}#=>nilfalse.instance_eval{self}#=>false 关于ruby-on-rails-self可以为假或为零吗?,我们在Stac

ruby - 访问 self.method_added 中的变量名

我相信Ruby,有一种方法可以访问block中所有局部变量的名称。defsome_method(param1,param2)plocal_variablesend每当调用“some_method”时,param1和param2将被打印出来。不是值(value)!但是变量名。现在,我想在self.method_added内实现相同的结果。只要定义了一个方法,就会调用self.method_added。我希望能够访问在self.method_added中定义的方法的局部变量的名称。例如,defself.method_added(method_name)#printsthevariables

javascript - ruby中的 'self'和javascript中的 'this'有什么区别

熟悉ruby,开始学习javascript。跳过学习“this”并将其视为ruby​​中javascript中的“self”和javascript中的“apply”与ruby​​中的“instance_eval”完全等价是安全的吗?如果不是,它们之间有什么大的区别? 最佳答案 self广泛用于RubyMetaprogramming.来自MetaprogrammingRuby书:EverylineofRubycodeisexecutedinsideanobject—theso–calledcurrentobject.Thecurren

ruby-on-rails - self.included——包含来自 Ruby 模块的类方法

我读了这篇文章:Rubymodules-includeddoendblock–但仍然不知道何时会在模块中使用self.includeddo...endblock。该帖子说,当您包含模块时,block中的代码将运行,但如果包含模块的唯一目的是什么,那有什么意义呢?无论如何都不需要运行该代码吗?为了运行该代码,不需要该block,对吧?下面这两个有什么区别:moduleMdefself.included(base)base.extendClassMethodsbase.class_evaldoscope:disabled,->{where(disabled:true)}endendmodu

ruby - 用 `module_function` 定义模块函数与在 Ruby 中用 `self.` 定义它一样吗?

在Ruby中用module_function定义一个模块函数和用self.定义它一样吗?也就是说,它们是否都会导致实例方法和模块方法的创建? 最佳答案 没有。moduleM1defself.foo;endendmoduleM2module_functiondefgoo;endendM1.methods(false)#=>[:foo]M1.instance_methods#=>[]M1.private_instance_methods#=>[]M2.methods(false)#=>[:goo]M2.instance_methods#

ruby - 这段 Ruby 代码的作用是什么? : def self. 元类;类<< self ;自己;结尾;结尾

以下是来自Why'sPoignantGuidetoRubyChapter6的Ruby代码片段,他试图在Ruby中演示元编程:#Getametaclassforthisclassdefself.metaclass;class我对Ruby不是很熟悉,但是扩展后的形式会是这样吗?defself.metaclassdefself.selfendend至少我是这么理解的。但是,它仍然不完全理解这段代码的作用。它的目的是什么?进一步在代码中,为什么添加这个:arr.eachdo|a|metaclass.instance_evaldodefine_method(a)do|val|@traits||=

ruby - 混合模块中的 self.class.name

我有一个模块,其中包含写入日志的方法。在每条消息中,我想放入记录这条消息的类的名称。模块可以混合使用include或extend。我需要我的日志在每种情况下都有正确的类名。精炼代码:moduleMdeffself.class.nameendendclassCextendMincludeMendpC.f#=>"Class"pC.new.f#=>"C"如您所见,第一个调用错误地打印了"Class"。我也希望它是"C"。如何实现? 最佳答案 无需求助于钩子(Hook),当self是Class/Module时,只需更改您的行为:module