草庐IT

objective-c - 引用自身和实例变量的 block

全部标签

ruby - Ruby 方法可以接受 block 或参数吗?

我正在上TheOdinProject的类(class),现在我必须自己编写一个新的#count方法(使用另一个名称),它的行为与Enumerable模块中的普通方法一样。有关计数的文档说明如下(http://ruby-doc.org/core-2.4.0/Enumerable.html#method-i-count):count→intcount(item)→intcount{|obj|block}→intReturnsthenumberofitemsinenumthroughenumeration.Ifanargumentisgiven,thenumberofitemsinenumt

Ruby - 可以将 block 作为参数作为实际 block 传递给另一个函数吗?

这就是我想要做的:defcall_block(in_class="String",&block)instance=eval("#{in_class}.new")puts"instanceclass:#{instance.class}"instance.instance_eval{block.call}end#---TESTEXAMPLE---#Thisoutputs"class:String"everytime"sdlkfj".instance_eval{puts"class:#{self.class}"}#Thiswillonlyoutput"class:Object"everyti

ruby - class Class - 实例与类方法

它是如何工作的?运行以下代码时,"hifromclass"会打印两次。ruby内部发生了什么使它表现得像这样?我实际上不是在为类创建实例方法吗classClassdeffooputs"hifromclass"endendClass.foox=Class.newx.foo 最佳答案 我不知道你是否意识到这一点,但是当你执行classClass...end时,你并没有创建一个名为Class,您正在重新打开现有类Class。由于Class是所有类都是其实例的类,这意味着Class是其自身的实例。因此,您可以直接在Class上调用Class

ruby - 如何在 Ruby 类之间传递变量?

我正在创建一个包含多个类的纸牌游戏。目前,我正在使用全局变量来保存$shuffled_deck、$players_hand和$dealers_hand变量,但我担心使用全局变量时(也许是不必要的)并且更愿意使用实例变量。我一直在四处阅读,但没有什么是真正点击的。谁能帮我指出正确的方向?使用实例变量我无法保存@players_hand和@dealers_hand以便能够在其他类中使用它们。例如,我有来自Player类的@players_hand。我让Dealer类抽一张牌,但我无法将那张@players_hand拉入Dealer类以将两者相加。我当前的代码是:classBlackjack

ruby - 是否可以在 ruby​​ 的传递 block 中引用传递给方法的参数?

我希望我没有在这里重复任何人,但我一直在谷歌和这里搜索但没有想出任何东西。这个问题实际上更像是一个“性感化”我的代码的问题。我特别想做的是:Dir.new('some_directory').eachdo|file|#isthereawaytorefertothestring'some_directory'viaamethodorvariable?end谢谢! 最佳答案 一般不会;这完全取决于方法本身调用block的参数是什么,并且在each被调用(调用你的block)时,字符串'some_directory'被传递给Dir.new

ruby - 为什么 `block_given?` 在这个动态定义的方法中不起作用?

当我编写带有可选block的方法时,我通常使用类似block.callifblock_given?但是,在像下面这样动态定义的方法中,block_given?似乎不起作用。classFoo%w[barbaz].eachdo|method_name|define_singleton_method(method_name)do|&block|puts"Was#{method_name}givenablock?#{block_given?}"putsblock.callendendendFoo.bar{puts'Iamablock'}该block按预期调用,但block_given?返回fa

ruby - 使用aws sdk获取带有特定标签的ec2实例

我正在尝试找出使用ruby​​awssdk获取带有特定标签(例如“测试”)的ec2实例列表的最佳方法。ec2=AWS::EC2.new(:access_key_id=>"XXXXXXXXXXXXX",:secret_access_key=>"YYYYYYYYY")ec2list=ec2.instances.filter("Name","testing)由于某些原因,这似乎不起作用。它认为它会过滤掉集合,只给我带有标签测试的实例。有没有办法使用ruby​​sdk来做到这一点?谢谢。 最佳答案 如果您想要标签“Name”的值为“test

ruby - 动态添加的实例方法无法访问类变量

这个问题在这里已经有了答案:RubylooksforclassvariableintheObjectinsteadofspecificclass(1个回答)关闭6年前。(问题已发布在RubyForum,但没有引起任何答案)。这是我的代码:classMCdefinitialize@x=5@@y=6enddeffputs@xputs@@yendendm=MC.newm.fm.f产生预期的输出而没有错误:56但是这个:defm.gputs@xputs@@yendm.g产生:5warning:classvariableaccessfromtoplevelNameError:uninitiali

ruby - 使用名称访问实例变量(作为符号)

在Ruby中,我有这个类:classPositionattr_reader:x,:ydefinitialize(x,y)@x,@y=x,yendend我想要做的是使用符号访问x和y变量,如下所示:axis=:xpos=Position.new(5,6)#oneway:pos.axis#5(pos.x)#otherway:pos.get(axis)#5(pos.x)感谢thisquestion我发现使用这段代码,我可以实现第二种行为。#...classPositiondefget(var)instance_variable_get(("@#{var}").intern)endend但它看

ruby-on-rails - 用 Prawn 生成 PDF - 如何访问 Prawn.generate 中的变量?

我正在尝试使用Prawn生成pdf@buyer=Buyer.lastPrawn::Document.generate("samle.pdf")dotext"hello#{@buyer.name}world"end但这显然不起作用(仅当我使用类变量@@buyer时),我的问题是将变量传递给Prawn::Document.generate的正确方法是什么(我知道这个问题的解决方案是prawnto,但我正在尝试一些......而且它也是一个sinatra项目) 最佳答案 来自http://rdoc.info/github/sandal/p